ASP.NET MVC重写表单无效验证的数据

时间:2015-10-25 12:28:51

标签: c# asp.net asp.net-mvc

在ASP.NET MVC项目中,我在视图中创建了一些使用输入的自定义字段,我没有使用html帮助器。提交包含在服务器端验证的无效数据的表单时,并非所有字段都自动重新填充,只有我使用html标签手动添加的字段才会重置。

如何获取该选择字段的值,以便在发生错误时将上一个用户选择设为默认选择值?

实施例: 在标签中选择性别:(男性|女性) 用户提交无效输入和表单显示错误,再次选择“男性”但是在提交表单之前选择了女性,我希望它再次自动成为女性。

1 个答案:

答案 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