То, что вы не используете все данные в версии POST, не означает, что вам нужно создать другую модель. Почему бы не сделать это простым?
Вот как это должно работать:
Ваш вид информации о посте должен быть строго типизирован для конкретной модели представления. Затем в вашем контроллере у вас есть два результата действия с именем Post, например, один украшен атрибутом [HTTPGET]
, а действие, на которое вы хотите опубликовать, - атрибутом [HTTPPOST]
. Кроме того, ваш метод get должен принимать такой параметр, как идентификатор записи, а метод post должен принимать модель в качестве параметра.
Для корректной проверки на стороне сервера вы можете украсить свойства вашего класса следующим образом:
public class ComplexDetailsViewModel
{
[Required]//Works for just the Id property
public int Id { get; set; }
public string DisplayValue1 { get; set; }
public string DisplayValue2 { get; set; }
// ...
}
Теперь в вашем контроллере вы можете использовать это bool: ModelState.IsValid
. В основном, если у них отключен JavaScript, и модель была опубликована без Id
, то модель будет недействительной.
Этот шаблон является чрезвычайно мощным и позволяет быстро внедрить проверку на стороне клиента и на стороне сервера. И, конечно, проверка на стороне клиента использует jQuery из коробки, поэтому мы можем легко расширить валидаторы. Вы даже можете выполнить проверку AJAX очень быстро. Когда я строю свои формы, я нигде не жертвую, когда дело доходит до проверки ... так как все это занимает совсем немного времени, чтобы сделать это правильно.
Чтобы ответить на ваш оригинальный вопрос:
Вид может быть строго типизирован только для одной модели. Вы не можете загрузить вид с одной моделью, а разместить его с другой (насколько я знаю). Я думаю, что если вы пытаетесь это сделать, ваша проблема в том, как вы построили свою модель.