Отправить обратно сложный объект со стороны клиента - PullRequest
0 голосов
/ 13 ноября 2009

Я использую ASP.NET MVC и Entity Framework. Я собираюсь передать сложную сущность на клиентскую сторону и позволить пользователю ее изменить, а затем отправить ее обратно в контроллер. Но я не знаю, как это сделать и не потеряет ли объект на стороне клиента отслеживание отношений EF, поскольку оно отсоединено от контекста объекта.

Ответы [ 3 ]

2 голосов
/ 13 ноября 2009

ASP.NET MVC способен связывать модели сложных объектов, и у него это хорошо получается. Самый простой способ сделать это - назвать поля вашего представления такими же, как свойства вашего объекта. Таким образом, в вашем методе действия, который форма отправляет вам, нужен только сложный объект в качестве параметра. Пример:

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

    <%= Html.TextBox("Property1") %>
    <%= Html.TextBox("Property2") %>
    <%= Html.TextBox("Property3") %>
    <%= Html.TextBox("Property4") %>
    <%= Html.CheckBox("PropertyBool") %>
    <%= Html.TextBox("Property5") %>

<% } %>

Какие сообщения для метода действия, например, так:

public ActionResult Index(ComplexObject complexoObject)
{

}

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

0 голосов
/ 13 ноября 2009

Вы говорите, что выводите список из 100 вопросов на одной странице? Я надеюсь, что вы этого не делаете. Прежде всего, это не очень удобно для пользователя. Это связано с большой прокруткой вниз, пользователь может потеряться, склонен к ошибкам, и если что-то пойдет не так, ему придется делать это снова и снова.

Лучший подход - один или несколько вопросов одновременно. С кнопками Next / Prev для перемещения между ними.

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

0 голосов
/ 13 ноября 2009

Сущность будет отделена. Вам нужно будет снова извлечь объект, обновить свойства и затем зафиксировать изменения. В качестве альтернативы вы можете присоединить сущность, но это может быть сложно, когда вы имеете дело с несколькими связанными сущностями, присоединяемыми одновременно. Если это так, проверьте http://www.codeproject.com/KB/architecture/attachobjectgraph.aspx.

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