【问题标题】:How to redirect a page from a View to a Controller in ASP.NET MVC 3?如何将页面从视图重定向到 ASP.NET MVC 3 中的控制器?
【发布时间】:2011-06-10 18:10:32
【问题描述】:

我将 mvc3 与 Razor 引擎一起使用,并且我有一个条件,即当它为真时,应自动重定向到另一个页面,并将对象作为参数发送。我想做的是:

@if (条件 > 10) {

Url.Action("编辑", 产品); //在这一行中自动重定向到动作编辑发送对象作为参数 }

有人知道是否存在为我执行此操作的 Html.Helper? 我的意思是重定向到这样的页面:someHtmlHelper("myAction", "myController", myObject)。

我尝试使用 JavaScript 执行此操作并且几乎可以正常工作,我只是在 url 参数中发现了一些问题。 Url.Action 返回符号代码而不是特殊字符的字符。像“&”而不是“&”。

@if (条件 > 10) { var url = Url.Action("编辑", 产品);

var Url = '@url'; location.href = 网址;

url 结果是: http://localhost:4772/Product/Edit?ProductId=2234&Code=0020582&Name...

如果 MVC3 没有实现单页重定向,我会受伤。

所以我需要帮助。 谢谢。

【问题讨论】:

  • @Renvn 属性cond 是否来自控制器?如果是这样,为什么不在请求仍在服务器端时从那里进行重定向?

标签: .net asp.net-mvc-3 razor


【解决方案1】:

视图不适合这种逻辑。

根据您的解决方案,您应该:

A)在返回视图之前检查你的控制器中的条件,然后像这样重定向:

if (cond >= 10) 
    return RedirectToAction("ADifferentResult");

B) 使用局部视图有条件地渲染动作,例如:

@{
    if (cond > 10) 
        Html.RenderAction("ADifferentResult");
    else
        Html.RenderAction("DefaultResult");
}

【讨论】:

    【解决方案2】:
    @if (cond > 10){@Html.ActionLink("Edit", "Product", new { ProductId = 2234, Code = 0020582 })}
    

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      相关资源
      最近更新 更多