2013-05-01 2 views
1

Я пытаюсь добавить требуемую проверку для поля формы не в моей модели базы данных. В настоящее время в моей модели базы данных у меня есть 2 значения.Проверка поля формы не в классе модели

Модель:

public class Values{ 
    [Required] 
    public string Value1{ get; set; } 
    [Required] 
    public string Value2 { get; set; } 
} 

Я хочу, чтобы третье значение в моих экранных форм, которые могут обрабатывать проверки, но она не существует в базе данных, поэтому не должно существовать в моей базе данных модели, но мне это нужно использовать в контроллере.

Вид:

<div class="editor-field"> 
     @Html.EditorFor(model => model.Value1) 
     @Html.ValidationMessageFor(model => model.Value1) 
    </div> 

    <div class="editor-field"> 
     @Html.EditorFor(model => model.Value2) 
     @Html.ValidationMessageFor(model => model.Value2) 
    </div> 

Как я могу добавить третье поле с той же простой проверкой, но не существует в моей базе данных? Если нет, как я могу добиться аналогичной проверки?

Пример:

 <div class="editor-field"> 
     @Html.EditorFor(model => model.Value3) 
     @Html.ValidationMessageFor(model => model.Value3) 
     </div> 

Спасибо!

ответ

1

Как добавить третье поле с той же простой проверкой, но что не существует в моей базе данных?

Здесь очень удобно пользоваться моделями viewmodel. Таким образом, вы можете принимать более или менее входные данные, которые необязательно (или конкретно) отображаются обратно в вашу модель или базу данных. Таким образом, вы можете иметь что-то вроде этого:

public class ValuesViewModel { 
    [Required] 
    public string Value1{ get; set; } 
    [Required] 
    public string Value2 { get; set; } 
    [Required] 
    public string Value3 { get; set; } 
} 

Вы затем запросить модель из базы данных и сопоставить его с этой ViewModel. Что-то вроде этого:

public ActionResult GetValues() { 
    var values = getFromDb(); 
    return View(new ValuesViewModel { 
     Value1 = values.Value1; 
     Value2 = values.Value2; 
     Value3 = some_other_value; 
    }); 

} 

Вы можете получить его обратно вместе с полями, которые находятся в вашей базе данных и делать вещи с, как вы считаете нужным.

[HttpPost] 
public ActionResult PostValues(ValuesViewModel input) { 
    var values = getFromDb(); 
    // map values back to the model from the viewmodel 
    values.Value1 = input.Value1; 
    values.Value2 = input.Value2; 
    // some logic applied to Value3 
    // etc, etc 
    // save your model to the database 
} 
+0

Это смысл, я собираюсь попробовать. Дайте знать, что я нахожу. – Dom

+0

Это именно то, что мне нужно. Спасибо за расширение моих горизонтов von v. – Dom

+0

Добро пожаловать @Dom –

0

Вы не можете сделать проверку на свойство, которое не входит в модель. Html.Helper * FOR * создает теги html для определенного свойства, если он не существует, как вы хотите его проверить?

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

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