c# - Why is the model binder mixing up ID fields? -


i have model used add new address, in view shopid in hiddenfor , id 0, fk shop null there no id set in it.

public int id { get; set; } public string shopid { get; set; } public string addressline1 { get; set; } public string addressline2 { get; set; } public string addressline3 { get; set; } public string district { get; set; } public string region { get; set; } public string postalcode { get; set; } public int countryid { get; set; } public system.datetime creationtimestamp { get; set; } public bool isprimary { get; set; } public nullable<double> latitude { get; set; } public nullable<double> longitude { get; set; }  public virtual country country { get; set; } public virtual shop shop{ get; set; } 

when post form modelstate.isvalid showing false saying value in shopid invalid in id field:

the value 'd04bf59f-be29-4896-ae70-54432b02aa46' not valid id.

why model binding placing shopid id field?

here's view:

@using (html.beginform()) {     @html.antiforgerytoken()      <div class="form-horizontal">         <h4>shopaddress</h4>         <hr />         @html.validationsummary(true)         @html.hiddenfor(m => model.shopid)         <div class="form-group">             @html.labelfor(model => model.addressline1, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.addressline1, new { @class = "form-control" })                 @html.validationmessagefor(model => model.addressline1)             </div>         </div>          <div class="form-group">             @html.labelfor(model => model.addressline2, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.addressline2, new { @class = "form-control" })                 @html.validationmessagefor(model => model.addressline2)             </div>         </div>          <div class="form-group">             @html.labelfor(model => model.addressline3, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.addressline3, new { @class = "form-control" })                 @html.validationmessagefor(model => model.addressline3)             </div>         </div>          <div class="form-group">             @html.labelfor(model => model.district, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.district, new { @class = "form-control" })                 @html.validationmessagefor(model => model.district)             </div>         </div>         <div class="form-group">             @html.labelfor(model => model.region, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.region, new { @class = "form-control" })                     @html.validationmessagefor(model => model.region)             </div>         </div>         <div class="form-group">             @html.labelfor(model => model.postalcode, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.textboxfor(model => model.postalcode, new { @class = "form-control" })                 @html.validationmessagefor(model => model.postalcode)             </div>         </div>         <div class="form-group">             @html.labelfor(model => model.country, "country", new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.dropdownlistfor(model => model.countryid, (ienumerable<selectlistitem>)viewbag.countries, new { @class = "form-control" })                 @html.validationmessagefor(model => model.country)             </div>         </div>         <div class="form-group">             @html.labelfor(model => model.isprimary, new { @class = "control-label col-md-2" })             <div class="col-md-10">                 @html.radiobuttonfor(model => model.isprimary, "true") yes                 @html.radiobuttonfor(model => model.isprimary, "false") no             </div>         </div>          <div class="form-group">             <div class="col-md-offset-2 col-md-10">                 <input type="submit" value="create" class="btn btn-default" />             </div>         </div>     </div> } 

most binder tries best find value id, , since it's not presented in view, take field has 'id" in it's name. try add hidden field id or create model view instead of passing domain object


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

ios - Change Storyboard View using Seague -