在MVC中,我可以获取URL而不是当前操作吗?

时间:2015-09-18 18:05:46

标签: c# asp.net-mvc-5

当我的用户导航到此视图localhost/Keyword/MainView并显示包含表单的部分视图时,我希望部分视图的控制器操作能够看到MainView的URL,而不是局部视图,并刷新它。

所以,如果我有这样的观点(MainView.cshtml):

@{
    Layout = "";
}
<div class="form-horizontal">
    <div class="row">
        <div class="col-md-3">
            <div id="keywordGroupList">
                @{ Html.RenderAction("_KeywordGroupList", "Keyword"); }
            </div>
            <div id="keywordGroupCreate">
                @{ Html.RenderAction("_KeywordGroupCreate", "Keyword"); }
            </div>
        </div>
        <div id="keywordGroupEdit" class="col-md-9">
        </div>
    </div>
</div>

我的部分观点(_KeywordGroupCreate.cshtml):

@using System.Collections
@model PublicationSystem.Model.KeywordGroup
@{
    Layout = "";
}
@using (Html.BeginForm
        (
            "_KeywordGroupCreate",
            "Keyword",
            FormMethod.Post,
            new { id = "keywordGroupCreateForm" }
        )
    )  
{
    @Html.AntiForgeryToken()
    //...
}

我希望控制器中的_KeywordGroupCreate操作执行以下操作:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult _KeywordGroupCreate(KeywordGroup model)
{
    db.KeywordGroup.Add(model);

    //return View();
    return RedirectToLocal(Request.Url.AbsolutePath);
}
public ActionResult RedirectToLocal(string returnUrl)
{
    if (Url.IsLocalUrl(returnUrl))
    {
        return Redirect(returnUrl);
    }

    return RedirectToAction("Index", "Submission");
}

但是现在Request.Url.AbsolutePath回来了&#39;〜/ keyword / _keywordgroupcreate / f12345cf-xxxx-yyyy-zzzz-000000000000&#39;

如何获取完整/父级/顶级网址localhost/Keyword/MainView

更新

我想确定父视图的原因是因为我可以在其他地方使用这个局部视图。因此,在此示例中,父视图为MainView.cshtml,但我可能还希望在UserKeywords.cshtml中使用部分视图。所以,我想我要问的是启用部分视图的提交/操作来刷新父视图,无论父视图是什么。

3 个答案:

答案 0 :(得分:0)

为什么不重定向主视图操作?

而不是:

return RedirectToLocal(Request.Url.AbsolutePath);

为什么不:

return RedirectToAction("MainView", "Keyword");

也许我没问题。

答案 1 :(得分:0)

我需要Request.UrlReferrer.AbsolutePath

答案 2 :(得分:-1)

更改部分视图(_KeywordGroupCreate),将网址添加为routeValues:

  @using System.Collections
  @model MVCApp.Controllers.KeywordGroup
  @{
     Layout = "";
  }
  @using (Html.BeginForm
          (
              "_KeywordGroupCreate",
              "Keyword",
              new { url = Request.Url.AbsoluteUri },
              FormMethod.Post,
              new { id = "keywordGroupCreateForm" }
          )
      )
  {

     ...
  }

并获取动作控制器帖子的值:

  [HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult _KeywordGroupCreate(KeywordGroup model, string url)
  {

这对你有用,别忘了投票!