繁体   English   中英

关于无效验证的 ASP.NET MVC 重新填充表单数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM