如果未选中 CheckBox,则填充 DropDownList
Populate DropDownList if CheckBox not checked
如果用户尝试在没有 selectCheckBox 的情况下提交表单,则在填充我的 DropDownList 时遇到问题。
如果用户填写了所有必填字段但未select复选框,然后单击提交,DropDownList 中的值将被删除。如果用户最初没有 select CheckBox,我不确定是否或如何再次填充这些值。
下面的 RenterViewModel:
public class RenterViewModel
{
[Required(ErrorMessage = "First Name is required")]
[Display(Name = "First Name")]
[StringLength(25)]
[MaxLength(25)]
public string RenterFirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
[Display(Name = "Last Name")]
[StringLength(25)]
[MaxLength(25)]
public string RenterLastName { get; set; }
[Required(ErrorMessage = "Address is required")]
[Display(Name = "Address")]
[StringLength(50)]
[MaxLength(50)]
public string RenterAddress { get; set; }
[Required(ErrorMessage = "City is required")]
[Display(Name = "City")]
[StringLength(35)]
[MaxLength(35)]
public string RenterCity { get; set; }
[Required(ErrorMessage = "Zip Code is required")]
[Display(Name = "Zip Code")]
[StringLength(5, MinimumLength = 5, ErrorMessage = "Zip Code should have minimum 5 digits")]
[MaxLength(5)]
[RegularExpression("([1-9][0-9]*)", ErrorMessage = "Numeric values only")]
public string RenterZipCode { get; set; }
[Required(ErrorMessage = "Phone Number is required")]
[Display(Name = "Phone Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$", ErrorMessage = "Not a valid Phone number")]
public string RenterPhoneNumber { get; set; }
[Required(ErrorMessage = "Email Address is required")]
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress)]
[MaxLength(255)]
[RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Incorrect Email Format")]
public string RenterEmailAddress { get; set; }
[Required(ErrorMessage = "Date of Birth is required")]
[Display(Name = "Date of Birth")]
[DataType(DataType.Date)]
public DateTime RenterDateOfBirth { get; set; }
[Required(ErrorMessage = "Name of Employer is required")]
[Display(Name = "Name of Employer")]
[StringLength(50)]
[MaxLength(50)]
public string RenterEmployerName { get; set; }
[Required(ErrorMessage = "Employer Phone Number is required")]
[Display(Name = "Employer Phone Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$", ErrorMessage = "Not a valid Phone number")]
public string RenterEmployerPhoneNumber { get; set; }
[Required(ErrorMessage = "Length of Employment is required")]
[Display(Name = "Length of Employment")]
[MaxLength(50)]
public string RenterEmploymentLength { get; set; }
[Required(ErrorMessage = "Monthly Gross Income is required")]
[Display(Name = "Monthly Gross Income")]
[Range(1, 100000000), DataType(DataType.Currency)]
public decimal RenterEmploymentGrossIncome { get; set; }
[Required(ErrorMessage = "Total number of persons to occupy apartment is required")]
[Display(Name = "Total number of persons to occupy apartment")]
[Range(1, 10, ErrorMessage = "Must be between 1 to 10")]
public int RenterTotalPersonsOccupy { get; set; }
[Required(ErrorMessage = "Total number of children to occupy apartment is required")]
[Display(Name = "Total number of Children to occupy apartment")]
[Range(0, 10, ErrorMessage = "Must be between 0 to 10")]
public int RenterTotalChildrenOccupy { get; set; }
//[Required(ErrorMessage = "You must exept terms to continue")]
[Display(Name = "I agree to the Terms")]
[Range(typeof(bool), "true", "true", ErrorMessage = "You must accept the Terms")]
//[Controllers.RenterController.CheckBoxRequired(ErrorMessage = "Please checked the items")]
public bool RenterAllowTerms { get; set; }
[Required(ErrorMessage = "Please select State")]
[Display(Name = "State")]
public int StateId { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
} code here
下面的RenterController:
public class RenterController : Controller
{
private readonly ApplicationDbContext _db;
public RenterController(ApplicationDbContext db)
{
_db = db;
}
// GET: /Renters List/
public IActionResult Index()
{
IEnumerable<Renter> objList = _db.Renters;
return View(objList);
}
// GET: /Create
public IActionResult Create()
{
RenterViewModel rentervm = new RenterViewModel()
{
States = _db.States.Select(i => new SelectListItem
{
Text = i.StateInitial,
Value = i.StateId.ToString()
})
};
return View(rentervm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RenterViewModel rentervm)
{
if (ModelState.IsValid)
{
var renterobj = new Renter();
{
renterobj.RenterFirstName = rentervm.RenterFirstName;
renterobj.RenterLastName = rentervm.RenterLastName;
renterobj.RenterAddress = rentervm.RenterAddress;
renterobj.RenterCity = rentervm.RenterCity;
renterobj.StateId = rentervm.StateId;
renterobj.RenterZipCode = rentervm.RenterZipCode;
renterobj.RenterPhoneNumber = rentervm.RenterPhoneNumber;
renterobj.RenterEmailAddress = rentervm.RenterEmailAddress;
renterobj.RenterDateOfBirth = rentervm.RenterDateOfBirth;
renterobj.RenterEmployerName = rentervm.RenterEmployerName;
renterobj.RenterEmployerPhoneNumber = rentervm.RenterEmployerPhoneNumber;
renterobj.RenterEmploymentLength = rentervm.RenterEmploymentLength;
renterobj.RenterEmploymentGrossIncome = rentervm.RenterEmploymentGrossIncome;
renterobj.RenterTotalPersonsOccupy = rentervm.RenterTotalPersonsOccupy;
renterobj.RenterTotalChildrenOccupy = rentervm.RenterTotalChildrenOccupy;
renterobj.RenterAllowTerms = rentervm.RenterAllowTerms;
}
_db.Renters.Add(renterobj);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(rentervm);
}
创建视图:
<form method="post" asp-action="Create">
<div class="border p-3">
<div class="form-group row">
<h2 class="text-black-50 pl-3">Preliminary Rental Application</h2>
</div>
<div class="row">
<div class="col-12">
<div class="form-group row">
<div class="col-4">
<label asp-for="RenterFirstName"></label>
<input asp-for="RenterFirstName" class="form-control" />
<span asp-validation-for="RenterFirstName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterLastName"></label>
<input asp-for="RenterLastName" class="form-control" />
<span asp-validation-for="RenterLastName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterAddress"></label>
<input asp-for="RenterAddress" class="form-control" />
<span asp-validation-for="RenterAddress" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterCity"></label>
<input asp-for="RenterCity" class="form-control" />
<span asp-validation-for="RenterCity" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="StateId"></label>
<select asp-for="StateId" asp-items="@Model.States" class="form-control">
<option></option>
</select>
<span asp-validation-for="StateId" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterZipCode"></label>
<input asp-for="RenterZipCode" class="form-control" />
<span asp-validation-for="RenterZipCode" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterPhoneNumber"></label>
<input asp-for="RenterPhoneNumber" type="tel" class="form-control" />
<span asp-validation-for="RenterPhoneNumber" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmailAddress"></label>
<input asp-for="RenterEmailAddress" type="email" class="form-control" />
<span asp-validation-for="RenterEmailAddress" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterDateOfBirth"></label>
<input asp-for="RenterDateOfBirth" type="date" class="form-control" />
<span asp-validation-for="RenterDateOfBirth" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmployerName"></label>
<input asp-for="RenterEmployerName" class="form-control" />
<span asp-validation-for="RenterEmployerName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmployerPhoneNumber"></label>
<input asp-for="RenterEmployerPhoneNumber" type="tel" class="form-control" />
<span asp-validation-for="RenterEmployerPhoneNumber" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmploymentLength"></label>
<input asp-for="RenterEmploymentLength" type="tel" class="form-control" />
<span asp-validation-for="RenterEmploymentLength" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmploymentGrossIncome"></label>
<input asp-for="RenterEmploymentGrossIncome" class="form-control" />
<span asp-validation-for="RenterEmploymentGrossIncome" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterTotalPersonsOccupy"></label>
<input asp-for="RenterTotalPersonsOccupy" class="form-control" />
<span asp-validation-for="RenterTotalPersonsOccupy" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterTotalChildrenOccupy"></label>
<input asp-for="RenterTotalChildrenOccupy" class="form-control" />
<span asp-validation-for="RenterTotalChildrenOccupy" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterAllowTerms"></label>
<input asp-for="RenterAllowTerms">
<span asp-validation-for="RenterAllowTerms" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-8 offset-2 row">
<div class="col">
<input type="submit" class="btn btn-info w-75" value="create" />
</div>
<div class="col">
<a asp-action="Index" class="btn btn-danger w-75">Back</a>
</div>
</div>
</div>
</div>
</div>
</div>
假设您的 ModelState.IsValid
是 returning false(因为您要求用户在提交前选中该复选框)并且由于某种原因您丢失了 States 字段中的数据,您应该re-populate 状态 select 列表项,在您 return 您的视图之前。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RenterViewModel rentervm)
{
if (ModelState.IsValid)
{
var renterobj = new Renter();
{
renterobj.RenterFirstName = rentervm.RenterFirstName;
renterobj.RenterLastName = rentervm.RenterLastName;
renterobj.RenterAddress = rentervm.RenterAddress;
renterobj.RenterCity = rentervm.RenterCity;
renterobj.StateId = rentervm.StateId;
renterobj.RenterZipCode = rentervm.RenterZipCode;
renterobj.RenterPhoneNumber = rentervm.RenterPhoneNumber;
renterobj.RenterEmailAddress = rentervm.RenterEmailAddress;
renterobj.RenterDateOfBirth = rentervm.RenterDateOfBirth;
renterobj.RenterEmployerName = rentervm.RenterEmployerName;
renterobj.RenterEmployerPhoneNumber = rentervm.RenterEmployerPhoneNumber;
renterobj.RenterEmploymentLength = rentervm.RenterEmploymentLength;
renterobj.RenterEmploymentGrossIncome = rentervm.RenterEmploymentGrossIncome;
renterobj.RenterTotalPersonsOccupy = rentervm.RenterTotalPersonsOccupy;
renterobj.RenterTotalChildrenOccupy = rentervm.RenterTotalChildrenOccupy;
renterobj.RenterAllowTerms = rentervm.RenterAllowTerms;
}
_db.Renters.Add(renterobj);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
//you should re populate the States field here before returning the view
return View(rentervm);
}
如果用户尝试在没有 selectCheckBox 的情况下提交表单,则在填充我的 DropDownList 时遇到问题。
如果用户填写了所有必填字段但未select复选框,然后单击提交,DropDownList 中的值将被删除。如果用户最初没有 select CheckBox,我不确定是否或如何再次填充这些值。
下面的 RenterViewModel:
public class RenterViewModel
{
[Required(ErrorMessage = "First Name is required")]
[Display(Name = "First Name")]
[StringLength(25)]
[MaxLength(25)]
public string RenterFirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
[Display(Name = "Last Name")]
[StringLength(25)]
[MaxLength(25)]
public string RenterLastName { get; set; }
[Required(ErrorMessage = "Address is required")]
[Display(Name = "Address")]
[StringLength(50)]
[MaxLength(50)]
public string RenterAddress { get; set; }
[Required(ErrorMessage = "City is required")]
[Display(Name = "City")]
[StringLength(35)]
[MaxLength(35)]
public string RenterCity { get; set; }
[Required(ErrorMessage = "Zip Code is required")]
[Display(Name = "Zip Code")]
[StringLength(5, MinimumLength = 5, ErrorMessage = "Zip Code should have minimum 5 digits")]
[MaxLength(5)]
[RegularExpression("([1-9][0-9]*)", ErrorMessage = "Numeric values only")]
public string RenterZipCode { get; set; }
[Required(ErrorMessage = "Phone Number is required")]
[Display(Name = "Phone Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$", ErrorMessage = "Not a valid Phone number")]
public string RenterPhoneNumber { get; set; }
[Required(ErrorMessage = "Email Address is required")]
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress)]
[MaxLength(255)]
[RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Incorrect Email Format")]
public string RenterEmailAddress { get; set; }
[Required(ErrorMessage = "Date of Birth is required")]
[Display(Name = "Date of Birth")]
[DataType(DataType.Date)]
public DateTime RenterDateOfBirth { get; set; }
[Required(ErrorMessage = "Name of Employer is required")]
[Display(Name = "Name of Employer")]
[StringLength(50)]
[MaxLength(50)]
public string RenterEmployerName { get; set; }
[Required(ErrorMessage = "Employer Phone Number is required")]
[Display(Name = "Employer Phone Number")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^(\+0?1\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$", ErrorMessage = "Not a valid Phone number")]
public string RenterEmployerPhoneNumber { get; set; }
[Required(ErrorMessage = "Length of Employment is required")]
[Display(Name = "Length of Employment")]
[MaxLength(50)]
public string RenterEmploymentLength { get; set; }
[Required(ErrorMessage = "Monthly Gross Income is required")]
[Display(Name = "Monthly Gross Income")]
[Range(1, 100000000), DataType(DataType.Currency)]
public decimal RenterEmploymentGrossIncome { get; set; }
[Required(ErrorMessage = "Total number of persons to occupy apartment is required")]
[Display(Name = "Total number of persons to occupy apartment")]
[Range(1, 10, ErrorMessage = "Must be between 1 to 10")]
public int RenterTotalPersonsOccupy { get; set; }
[Required(ErrorMessage = "Total number of children to occupy apartment is required")]
[Display(Name = "Total number of Children to occupy apartment")]
[Range(0, 10, ErrorMessage = "Must be between 0 to 10")]
public int RenterTotalChildrenOccupy { get; set; }
//[Required(ErrorMessage = "You must exept terms to continue")]
[Display(Name = "I agree to the Terms")]
[Range(typeof(bool), "true", "true", ErrorMessage = "You must accept the Terms")]
//[Controllers.RenterController.CheckBoxRequired(ErrorMessage = "Please checked the items")]
public bool RenterAllowTerms { get; set; }
[Required(ErrorMessage = "Please select State")]
[Display(Name = "State")]
public int StateId { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
} code here
下面的RenterController:
public class RenterController : Controller
{
private readonly ApplicationDbContext _db;
public RenterController(ApplicationDbContext db)
{
_db = db;
}
// GET: /Renters List/
public IActionResult Index()
{
IEnumerable<Renter> objList = _db.Renters;
return View(objList);
}
// GET: /Create
public IActionResult Create()
{
RenterViewModel rentervm = new RenterViewModel()
{
States = _db.States.Select(i => new SelectListItem
{
Text = i.StateInitial,
Value = i.StateId.ToString()
})
};
return View(rentervm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RenterViewModel rentervm)
{
if (ModelState.IsValid)
{
var renterobj = new Renter();
{
renterobj.RenterFirstName = rentervm.RenterFirstName;
renterobj.RenterLastName = rentervm.RenterLastName;
renterobj.RenterAddress = rentervm.RenterAddress;
renterobj.RenterCity = rentervm.RenterCity;
renterobj.StateId = rentervm.StateId;
renterobj.RenterZipCode = rentervm.RenterZipCode;
renterobj.RenterPhoneNumber = rentervm.RenterPhoneNumber;
renterobj.RenterEmailAddress = rentervm.RenterEmailAddress;
renterobj.RenterDateOfBirth = rentervm.RenterDateOfBirth;
renterobj.RenterEmployerName = rentervm.RenterEmployerName;
renterobj.RenterEmployerPhoneNumber = rentervm.RenterEmployerPhoneNumber;
renterobj.RenterEmploymentLength = rentervm.RenterEmploymentLength;
renterobj.RenterEmploymentGrossIncome = rentervm.RenterEmploymentGrossIncome;
renterobj.RenterTotalPersonsOccupy = rentervm.RenterTotalPersonsOccupy;
renterobj.RenterTotalChildrenOccupy = rentervm.RenterTotalChildrenOccupy;
renterobj.RenterAllowTerms = rentervm.RenterAllowTerms;
}
_db.Renters.Add(renterobj);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(rentervm);
}
创建视图:
<form method="post" asp-action="Create">
<div class="border p-3">
<div class="form-group row">
<h2 class="text-black-50 pl-3">Preliminary Rental Application</h2>
</div>
<div class="row">
<div class="col-12">
<div class="form-group row">
<div class="col-4">
<label asp-for="RenterFirstName"></label>
<input asp-for="RenterFirstName" class="form-control" />
<span asp-validation-for="RenterFirstName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterLastName"></label>
<input asp-for="RenterLastName" class="form-control" />
<span asp-validation-for="RenterLastName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterAddress"></label>
<input asp-for="RenterAddress" class="form-control" />
<span asp-validation-for="RenterAddress" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterCity"></label>
<input asp-for="RenterCity" class="form-control" />
<span asp-validation-for="RenterCity" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="StateId"></label>
<select asp-for="StateId" asp-items="@Model.States" class="form-control">
<option></option>
</select>
<span asp-validation-for="StateId" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterZipCode"></label>
<input asp-for="RenterZipCode" class="form-control" />
<span asp-validation-for="RenterZipCode" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterPhoneNumber"></label>
<input asp-for="RenterPhoneNumber" type="tel" class="form-control" />
<span asp-validation-for="RenterPhoneNumber" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmailAddress"></label>
<input asp-for="RenterEmailAddress" type="email" class="form-control" />
<span asp-validation-for="RenterEmailAddress" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterDateOfBirth"></label>
<input asp-for="RenterDateOfBirth" type="date" class="form-control" />
<span asp-validation-for="RenterDateOfBirth" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmployerName"></label>
<input asp-for="RenterEmployerName" class="form-control" />
<span asp-validation-for="RenterEmployerName" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmployerPhoneNumber"></label>
<input asp-for="RenterEmployerPhoneNumber" type="tel" class="form-control" />
<span asp-validation-for="RenterEmployerPhoneNumber" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmploymentLength"></label>
<input asp-for="RenterEmploymentLength" type="tel" class="form-control" />
<span asp-validation-for="RenterEmploymentLength" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterEmploymentGrossIncome"></label>
<input asp-for="RenterEmploymentGrossIncome" class="form-control" />
<span asp-validation-for="RenterEmploymentGrossIncome" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterTotalPersonsOccupy"></label>
<input asp-for="RenterTotalPersonsOccupy" class="form-control" />
<span asp-validation-for="RenterTotalPersonsOccupy" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterTotalChildrenOccupy"></label>
<input asp-for="RenterTotalChildrenOccupy" class="form-control" />
<span asp-validation-for="RenterTotalChildrenOccupy" class="text-danger"></span>
</div>
<div class="col-4">
<label asp-for="RenterAllowTerms"></label>
<input asp-for="RenterAllowTerms">
<span asp-validation-for="RenterAllowTerms" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<div class="col-8 offset-2 row">
<div class="col">
<input type="submit" class="btn btn-info w-75" value="create" />
</div>
<div class="col">
<a asp-action="Index" class="btn btn-danger w-75">Back</a>
</div>
</div>
</div>
</div>
</div>
</div>
假设您的 ModelState.IsValid
是 returning false(因为您要求用户在提交前选中该复选框)并且由于某种原因您丢失了 States 字段中的数据,您应该re-populate 状态 select 列表项,在您 return 您的视图之前。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RenterViewModel rentervm)
{
if (ModelState.IsValid)
{
var renterobj = new Renter();
{
renterobj.RenterFirstName = rentervm.RenterFirstName;
renterobj.RenterLastName = rentervm.RenterLastName;
renterobj.RenterAddress = rentervm.RenterAddress;
renterobj.RenterCity = rentervm.RenterCity;
renterobj.StateId = rentervm.StateId;
renterobj.RenterZipCode = rentervm.RenterZipCode;
renterobj.RenterPhoneNumber = rentervm.RenterPhoneNumber;
renterobj.RenterEmailAddress = rentervm.RenterEmailAddress;
renterobj.RenterDateOfBirth = rentervm.RenterDateOfBirth;
renterobj.RenterEmployerName = rentervm.RenterEmployerName;
renterobj.RenterEmployerPhoneNumber = rentervm.RenterEmployerPhoneNumber;
renterobj.RenterEmploymentLength = rentervm.RenterEmploymentLength;
renterobj.RenterEmploymentGrossIncome = rentervm.RenterEmploymentGrossIncome;
renterobj.RenterTotalPersonsOccupy = rentervm.RenterTotalPersonsOccupy;
renterobj.RenterTotalChildrenOccupy = rentervm.RenterTotalChildrenOccupy;
renterobj.RenterAllowTerms = rentervm.RenterAllowTerms;
}
_db.Renters.Add(renterobj);
await _db.SaveChangesAsync();
return RedirectToAction("Index");
}
//you should re populate the States field here before returning the view
return View(rentervm);
}