我有'邮件服务器配置'的视图。在这个视图上有2个按钮:
[SOME FORM FIELDS]
<input class="button" type="submit" value="@T("Save")" />
<input class="button" type="submit" value="@T("Send Test Email")" />
第一个按钮调用我的控制器,并返回相同的视图,包含任何验证/成功消息(这是一个表单):
[HttpPost]
public ActionResult Index(MailServerSettingsViewModel viewModel)
{
...
效果非常好,但显然“发送测试电子邮件”按钮也会这样做。
假设我不想离开页面(即加载不同的视图),但想要调用另一个控制器来发送测试电子邮件,那么“正确”的方法是使用它ActionLink
帮手?从这个其他控制器,然后我可以返回相同的窗体视图?或者我可以以某种方式使用相同的控制器,但确定按下哪个按钮来决定是否验证视图模型或只是调用另一个服务/类/任何发送测试电子邮件和适当响应?
你可以从我问这个问题的方式告诉我,我来自WebForms的背景,而且我仍然习惯于使用MVC的东西。
我尝试过什么
现在,我实际上是在与AJAX异步调用另一个控制器。它实际上运行良好,可能是最合适的,但情况并非总是如此,所以我想知道如何在其他场景中实现上述目标。
答案 0 :(得分:1)
如果将两个提交按钮上的'name'属性设置为相同的值,则可以通过检查值来检测控制器中单击的属性。
答案 1 :(得分:1)
如果你不想要ajax,你可以启动一个线程来在控制器中发送电子邮件。
@Html.ActionLink("Send Test Email",
"actionName", "ControllerName",
new { MailServerSettingsViewModel }, new { @class = "button" })