[英]ASP.NET MVC refill form data on invalid validation
在 ASP.NET MVC 项目中,我在视图中创建了一些使用输入的自定义字段,我没有使用 html 帮助程序。 当提交包含在服务器端验证的无效数据的表单时,并非所有字段都会自动重新填充,只有我使用 html 标签手动添加的字段才会被重置。
如何获取该选择字段的值,以便在发生错误时使之前的用户选择成为默认选择值?
示例:选择性别:(男性|女性)在标签中用户提交无效输入并且表单显示错误,再次选择“男性”但在提交表单之前选择了女性,我希望它再次自动成为女性。
基本上,您需要做的是将下拉列表的集合与所选选项的 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.