我有两个控制器和两个模型(完全分开)。然后我有一个视图,我使用url.action创建一个使用第一个控制器和模型的新记录。然后我有另一个url.action为另一个控制器和模型创建一个记录。我的问题是,提交一个将提交另一个。使用url.action来显示创建视图是不好的做法 - 因为当我只使用一个url.action时效果很好。或者拥有多个是不好的做法。如果不使用另一种观点,如何实现这一目标呢?
这个观点很简单。 ....
<div>
@*@Html.Action("Create", "MPost", new { TaskId = Model.TaskId, TaskTitle = Model.Title })*@
</div>
<div>
@Html.Action("Vote", "Vote", new { TaskId = Model.TaskId})
</div>
答案 0 :(得分:0)
在您的视图中使用多个Html.Action()
调用没有任何问题,但是您需要考虑这是否是您使用的最佳选择。
确定您要做的事
Html.Action()
将在最初呈现View时调用控制器操作,它将执行View中的任何操作,然后它可能会也可能不会返回另一个View / Partial View。
您在帖子中提到了以下内容:
我的问题是提交一个会提交另一个。不好吗 练习使用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>
这些将按照您的预期执行对Controller Action的基本GET
请求。如果您需要实际POST
个值,那么您应该考虑使用<form>
并提交它:
<form action='@Url.Action("Vote", "Vote", new { TaskId = Model.TaskId})'>
<input type='submit' value='Cast Your Vote!' />
</form>
通常,如果您有两个可能会将值发布到的单独的URL,则应考虑将它们分别放在自己的<form>
中,以避免任何混淆或可能发布到错误的区域。使用链接也可以正常工作,但请记住,他们会将用户重定向到您正在执行的Controller Action返回的View。