我能阻止视图中的c#代码在表单发布时重定向吗?
本文关键字:表单 布时 重定向 代码 视图 | 更新日期: 2023-09-27 18:06:38
我有一个局部视图,可以从我的网站上的任何地方调用。当用户点击Partial View
中的submit
按钮时,发送邮件。用户没有被要求提供任何信息,因为这已经包含在我的Model
中。c#代码在我的Partial View
而不是我的Controller
中,因为我需要传递Model
(其中包含几个arrays
)作为参数,但没有成功。当用户单击该按钮时,提交表单并发送邮件,但随后将用户重定向到Partial View
的地址,而不是显示Partial View
的原始View
的地址。如何防止这种重定向?
例如,如果PartialView.cshtml
从/Home/View/
加载,我在post上被重定向到/Home/PartialView
。
PartialView。在JQuery中通过Ajax post从HomeController.cs加载cshtml
[HttpPost]
public ActionResult PartialView()
{
....create myModel....
return PartialView(myModel);
}
PartialView.cshtml
@using (Html.BeginForm()) {
<input type="submit" value="email" />
}
...rest of partial view...
@{
if (IsPost){
....sends email using data in model....
}
}
之前我有以下内容,但是控制器接收到的模型中的数据总是null。(不是问题的一部分,但如果有人问为什么我的代码不在我的控制器):
PartialView.cshtml
@using (Html.BeginForm("sendMail", "Home", FormMethod.Post, new { myModel = Model }))
{
@Html.HiddenFor(a => a.firstArray);
@Html.HiddenFor(a => a.secondArray);
<input type="submit" value="email" />
}
HomeController.cs
[HttpPost]
public void sendMail(myModelType myModel )
{
....send email using data in model....
}
你返回的是分部视图,所以它当然会重定向到分部视图:
return PartialView(myModel);
相反,你想要获得父元素,你可以通过ParentActionViewContext获得。试试这个:
var controller = ControllerContext.ParentActionViewContext.RouteData.Values["Controller"] as string;
var action = ControllerContext.ParentActionViewContext.RouteData.Values["Action"] as string;
return View(action, controller);