2009-12-19 4 views
2

У меня есть ошибка проверки правильности с int.Ошибка проверки MVC ASP.Net

У меня есть проверки на имя клиента:

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

Теперь, если я хочу, чтобы добавить проверку для города, в этом случае у меня есть CityId, который получает сохраненное как тип Int, поэтому я не могу написать my if так же ... потому что нет метода int.IsNullOrEmpty. Предположим, пользователь не выбрал раскрывающийся список для города - это в основном экономия без какой-либо ценности.

Каков наилучший способ написать мой оператор проверки для int?

UPDATE: Вот пример того, что у меня есть для моей формы, на мой взгляд:

<% 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"); 
    } 
} 

ответ

1

использования обнуляемого Интс,

int? i = null; 
0

Вы можете установить значение по умолчанию в конфигурации маршрута. Если вы установите значение по умолчанию для значения, которое, как вы знаете, недействительны, вы можете просто проверить это значение. Если ваши города пронумерованы от 1 до X, установите значение по умолчанию -1 и проверьте это.

0

Если вы получили ввод в строчном формате, попробуйте использовать регулярное выражение для проверки целочисленного формата.

Regex rxNums = new Regex(@"^\d+$"); // Any positive decimal 
if (!rxNums.IsMatch(cityId)) 
{ 
    yield return new RuleViolation("city id Required", "cityId"); 
} 

Если вы получили значение в целочисленном формате, тогда вы просто проверяете, больше ли это значение или нет.

1

У меня было такое же точное требование неделю назад. Вы можете решить это двумя способами.

1) В раскрывающийся вы всегда будете иметь «Выберите» со значением по умолчанию, как -1. Когда форма отправляется и ни один город не выбран, то Модель MVC свяжет -1 (значение по умолчанию) для CityID. Таким образом, вы всегда можете проверить, если CityID> 0 еще «ошибка повышения»

2) Использовать функцию C# 3.0 Nullable Int (int?) для CityID, что означает, что ваш CityID также может быть нулевым. Если значение CityID не передано, ваш городской идентификатор всегда будет нулевым.

+0

Я ценю вашу помощь, хотя я не совсем понимаю, как дать «Пожалуйста, выберите» значение по умолчанию -1. Я могу заставить его сказать «Пожалуйста, выберите», но я не знаю, где указать, что это за значение. Я обновил свой вопрос с помощью кода, который, на мой взгляд, показывает, что у меня есть. – Ben

+0

Когда вы создадите выпадающий список, он будет иметь текст и значение. Я всегда присваиваю значение как -1 и текст как «Пожалуйста, выберите». Когда форма отправляется, опубликованное значение будет содержать «-1» в качестве CityID в вашем примере. –

Смежные вопросы