Пример почтовой модели ASP.NET MVC? - PullRequest
4 голосов
/ 26 марта 2010

Я смотрел презентацию HaHaa на ASP.NET MVC из MIX , и они упомянули использование модели постов, где, как мне кажется, они говорили, что вы можете использовать модель, которая была ТОЛЬКО для публикации. Я пытался искать примеры для этого. Я не понимаю, что они говорят? У кого-нибудь есть пример того, как это может работать в строго типизированном представлении, где модель представления и модель пост-типа не совпадают?

Ответы [ 2 ]

8 голосов
/ 26 марта 2010

Ниже немного расширен пример Скотту. Как объясняет @SLaks, при получении POST MVC попытается создать новый объект MyPostName и сопоставить его свойства с полями from. Он также обновит свойство ModelState с результатами сопоставления и проверки.

Когда действие возвращает представление, оно также должно предоставить модель для него. Тем не менее, представление не должно использовать ту же модель. Фактически, представление может быть строго типизировано с другой моделью, которая содержит расширенные данные, например, она может иметь свойства навигации, связанные с внешними ключами в таблице БД; и в этом случае логика для сопоставления модели POST с моделью представления будет содержаться в действии POST.

public class MyGetModel
{
    string FullName;
    List<MyGetModel> SuggestedFriends;
}

public class MyPostModel
{
    string FirstName;
    string LastName;
}

//GET: /Customer/Create
public ActionResult Create()
{
    MyGetModel myName = new MyGetModel();
    myName.FullName = "John Doe"; // Or fetch it from the DB
    myName.SuggestedFriends = new List<MyGetModel>; // For example - from people select name where name != myName.FullName
    Model = myName;
    return View();
}

//POST: /Customer/Create
[HttpPost]
public ActionResult Create(MyPostModel newName)
{
    MyGetModel name = new MyGetModel();
    name.FullName = newName.FirstName + "" + newName.LastName; // Or validate and update the DB 
    return View("Create", name);
}
2 голосов
/ 26 марта 2010

Модель POST будет использоваться только для передачи данных в ваш метод действия.

Модель, которую действие POST отправляет своему представлению, не обязательно должна быть связана с моделью, которую она получила (и обычно не будет).
Точно так же модель, которую первоначальное действие GET (которое показывает форму в первую очередь) передает его представлению (которое подчиняется действию POST), не должна быть связана с моделью, которую выполняет действие POST (хотя обычно будет такая же модель)

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

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