在ASP.NET MVC项目中,我在视图中创建了一些使用输入的自定义字段,我没有使用html帮助器。提交包含在服务器端验证的无效数据的表单时,并非所有字段都自动重新填充,只有我使用html标签手动添加的字段才会重置。
如何获取该选择字段的值,以便在发生错误时将上一个用户选择设为默认选择值?
实施例: 在标签中选择性别:(男性|女性) 用户提交无效输入和表单显示错误,再次选择“男性”但是在提交表单之前选择了女性,我希望它再次自动成为女性。
答案 0 :(得分:0)
基本上你要做的就是发送一个带有所选选项id的下拉列表的集合。请考虑以下示例应用程序代码:
型号:
public class Customer
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
}
控制器:
public class HomeController : Controller
{
public IEnumerable<Customer> Customers
{
get
{
return new List<Customer>
{
new Customer { CustomerId = 1, CustomerName = "Thor" },
new Customer { CustomerId = 2, CustomerName = "Iron Man" },
new Customer { CustomerId = 3, CustomerName = "Hawk Eye" }
};
}
}
public ActionResult Index()
{
ViewBag.CustomerId = new SelectList(Customers, "CustomerId", "CustomerName");
return View();
}
public ActionResult Submit(Customer customer)
{
//Send selected CustomerId back to the view
ViewBag.CustomerId = new SelectList(Customers, "CustomerId", "CustomerName", customer.CustomerId);
return View("Index");
}
}
查看:
@using (Html.BeginForm("Submit", "Home", FormMethod.Post))
{
@Html.DropDownList("CustomerId")
<button type="submit">Submit</button>
}
因此,对于第一次点击的Index
操作,我会使用它填充下拉列表。提交表单后,表单中的选定值会发布到Submit
操作,我会在表单中选择CustomerId
,并填充CustomerId
所选的集合然后再次返回Index
视图。
因此,您将看到从下拉列表中选择的任何选项,然后单击Submit
,您将返回到同一页面,但选择了上一个选项。希望它有所帮助,这里的代码更有条理:https://dotnetfiddle.net/qEHPT3