我希望页面上有一个输入按钮用于一个表单。这些按钮中的每一个都应该触发相同的控制器POST操作(因此以相同的方式更新模型,基本上更新购物车数量)。现在,在控制器中 - 使用相同的动作,我想另外触发2个替代行为。选项1 - 重定向到第x页(继续购物),2 - 发送电子邮件,完成交易,重定向到y页。
我不知道从哪里开始引导控制器了解哪个按钮被点击了?可能这些输入应该有一个id或名称,模型将能够以这种方式识别它们,但我不确定如何引导控制器这样做?
我最好寻找没有jquery javascript等的解决方案。非常感谢帮助。
查看
@model Project.ViewModels.CartViewModel
@using (Html.BeginForm())
{
for (int i =0; i < Model.CartItems.Count; i++ )
{
@Html.DisplayFor(m=>m.CartItems[i].Product.Name)
@Html.TextBoxFor(m => m.CartItems[i].Quantity)
}
<input type="submit" name="emailName" id="emailId" value="Send E-mail" />
<input type="submit" name="emailName" id="emailId" value="Redirect" />
}
控制器
[HttpPost]
public ActionResult Show(CartViewModel cvm)
{
if (TryUpdateModel(cvm))
{
if( ??? )return RedirectToAction("x", "Home");
if( ??? )
{
//send E-mail
return RedirectToAction("y", "Home");
}
}
答案 0 :(得分:1)
听起来你是在追求这样的事情......
查看强>
@model Project.ViewModels.CartViewModel
@using (Html.BeginForm())
{
for (int i = 0; i < Model.CartItems.Count; i++)
{
@Html.DisplayFor(m => m.CartItems[i].Product.Name)
@Html.TextBoxFor(m => m.CartItems[i].Quantity)
}
<button name="action" type="submit" value="email">Send E-mail</button>
<button name="action" type="submit" value="redirect">Redirect</button>
}
<强>动作强>
[HttpPost]
public ActionResult Show(CartViewModel cvm, string action)
{
if(action == "email")
{
//Do something
}
if(action == "redirect")
{
//Do something
}
}