2016-04-17 3 views
1

У меня есть два контроллера и две модели (полностью отдельные). Затем у меня есть один вид, где я использую url.action для создания новой записи с использованием первого контроллера и модели. Затем у меня есть другой url.action, чтобы создать запись для другого контроллера и модели. Моя проблема заключается в том, что отправка одной из них будет другой. Неправильно ли использовать url.action для отображения представления create - потому что он работает хорошо, когда я использую только один url.action. Или это плохая практика иметь несколько. Как еще можно достичь этой цели, не используя другую точку зрения?У вас есть несколько url.actions в одном представлении?

вид довольно прямолинейный. ....

<div> 
@*@Html.Action("Create", "MPost", new { TaskId = Model.TaskId, TaskTitle = Model.Title })*@ 
</div> 

<div> 
@Html.Action("Vote", "Vote", new { TaskId = Model.TaskId})  
</div> 
+0

Просьба поделиться своим мнением. – ssilas777

ответ

0

Там нет ничего плохого в использовании мультипликатора Html.Action() вызовов Фототурова, однако нужно учитывать, если это лучший вариант для вас использовать.

Определение того, что вы хотите сделать

Html.Action() собирается вызвать действие контроллера, когда вид первоначально оказанной, и он будет выполнять действия, в представлении, а затем он может или не может вернуться другой вид/Частичный вид.

Вы упомянули следующее в своем сообщении:

Моя проблема заключается в том, что представления один будет представлять другой. Это плохо Практика использования url.action для отображения представления создания - потому что он хорошо работает, когда я использую только один url.action.

Это похоже на то, что вы на самом деле хотите, чтобы они функционировали как ссылки и когда их нажимали, чтобы их можно было назвать. Если это так, то вы можете быть лучше либо создать ссылку, указывающую на соответствующее действие через Url.Action() или Html.ActionLink() помощников:

<a href='Url.Action("Create", "MPost", new { TaskId = Model.TaskId, TaskTitle = Model.Title })'>Create New Post!</a> 

Они будет выполнять основные GET запросов к вашим действиям контроллера, как вы могли бы ожидать. Если вам нужно на самом деле POST значения, то вы должны рассмотреть возможность использования <form> и его представление:

<form action='@Url.Action("Vote", "Vote", new { TaskId = Model.TaskId})'> 
     <input type='submit' value='Cast Your Vote!' /> 
</form> 

В общем, если у вас есть два отдельных URL-адреса, которые могут размещающие значение, вы должны рассмотреть вопрос о размещении их каждых в пределах своих собственный <form>, чтобы избежать путаницы или возможной публикации в неправильном месте. Использование ссылок будет работать очень хорошо, но имейте в виду, что они перенаправят пользователя в представление, которое возвращается из действия контроллера, которое вы нажимаете.

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