首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能否防止视图中的C#代码在表单post上重定向?

我能否防止视图中的C#代码在表单post上重定向?
EN

Stack Overflow用户
提问于 2015-08-06 14:45:35
回答 1查看 803关注 0票数 0

我有一个局部的观点,可以从我的网站上的任何地方调用。当用户在submit中单击Partial View按钮时,就会发送电子邮件。用户不需要任何信息,因为这已经包含在我的Model中。C#代码在我的Partial View中,而不是我的Controller中,因为我需要将Model (包含几个arrays)作为参数传递,但是没有成功。当用户单击按钮时,表单提交并发送邮件,然后用户被重定向到Partial View的地址,而不是显示Partial View的原始View的地址。我怎样才能防止这种重定向?

例如,如果PartialView.cshtml是从/Home/View/加载的,那么我将在post中重定向到/Home/PartialView

PartialView.cshtml通过JQuery中的Ajax post从HomeController.cs加载

代码语言:javascript
复制
[HttpPost]
public ActionResult PartialView()
{
    ....create myModel....
    return PartialView(myModel);
}

PartialView.cshtml

代码语言:javascript
复制
@using (Html.BeginForm()) { 
    <input type="submit" value="email" />
}

...rest of partial view...

@{
    if (IsPost){
        ....sends email using data in model....
    }
}

以前I有以下内容,但是控制器接收到的模型中的数据始终为null。(不是问题的一部分,但如果有人问为什么我的代码不在我的控制器中):

PartialView.cshtml

代码语言:javascript
复制
@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

代码语言:javascript
复制
[HttpPost]
public void sendMail(myModelType myModel )
{
    ....send email using data in model....
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-06 14:59:48

您正在返回部分视图,因此它当然会将您重定向到部分视图:

代码语言:javascript
复制
return PartialView(myModel);

相反,您希望获得父服务器,您可以通过ParentActionViewContext获得它。试一试:

代码语言:javascript
复制
var controller = ControllerContext.ParentActionViewContext.RouteData.Values["Controller"] as string;
var action = ControllerContext.ParentActionViewContext.RouteData.Values["Action"] as string;

return View(action, controller);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31858863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档