ASP.Net MVC错误验证

我有一个int错误验证问题。

我对客户名称进行了验证:

if (String.IsNullOrEmpty(CustomerName))
            yield return new RuleViolation("Customer Name Required", "CustomerName");

现在如果我想为城市添加验证,在这种情况下,我有一个保存为int类型的CityID,所以我不能用同样的方法编写if语句...因为没有int.IsNullOrEmpty方法。 假设用户没有选择城市的下拉菜单 - 基本上没有价值的节省。

为int编写验证语句的最佳方式是什么?

更新:这是我的视图中我的表单样本:

<% using (Html.BeginForm())
   {%>

    <fieldset>
        <legend>Add a new customer</legend>
        <p>
            <label for="CustomerName">Customer Name:</label>
            <%= Html.TextBox("CustomerName")%>
            <%= Html.ValidationMessage("CustomerName", "*")%>
        &nbsp;&nbsp;
            <label for="CityID">City:</label>
            <%= Html.DropDownList("CityID", Model.Cities as SelectList, "Select City")%>
            <%= Html.ValidationMessage("CityID", "*")%>
        &nbsp;&nbsp;
            <input type="submit" value="Create New Customer" />
        </p>
    </fieldset>

<% } %>

我的视图模型如下所示:

public class CustomerFormViewModel
{
    //Properties
    public Customer Customer { get; set; }
    public SelectList Cities { get; set; }

    //Constructor
    public CustomerFormViewModel(Customer customer)
    {
        CustomerRepository customerRepository = new CustomerRepository();
        Customer = customer;
        Cities = new SelectList(customerRepository.FindAllCities(), "CityID", "CityName");  
    }
}

使用可为空的整数,

int? i = null;

一周前我有同样的要求。 你可以用两种方法来解决这个问题。

1)在下拉菜单中,您将始终有“ 请选择 ”,默认值为-1 。 当提交表单并且没有选择城市时, MVC模型将为 CityID 绑定-1 (默认值)。 所以你可以随时检查CityID> 0 else“raise error”

2)为CityID使用c#3.0功能Nullable Int(int?) ,这意味着您的CityID也可以为null。 如果没有为CityID传递值,则您的cityID将始终为空。


您可以在路由配置中设置默认值。 如果您将默认值设置为您知道的值无效,那么您可以检查该值。 如果您的城市编号为1到X,则将默认值设置为-1并检查。

链接地址: http://www.djcxy.com/p/30567.html

上一篇: ASP.Net MVC Error Validation

下一篇: A comprehensive regex for phone number validation