Asp.net mvc Url.Action以可为空的参数重定向控制器

时间:2015-06-23 03:21:55

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

我有这样的控制器:

public ActionResult Load(Guid? id)
{
   ...
}

加载/Report/Load之类的视图时会加载页面。

然后我点击页面上的链接加载一个项目/Report/Load/7628EDFB-EFD5-E111-810C-00FFB73098ED,它会加载页面。

现在我想使用此url.action

再次重定向到/Report/Load

<a href="@Url.Action("Load", "Report")">Close Report</a>

但它一直将我重定向到/Report/Load/7628EDFB-EFD5-E111-810C-00FFB73098ED

我需要在URL.Action上做什么才能将我重定向到带有id的页面?

尝试没有成功:

<a href="@Url.Action("Load", "Report", null, null)">Close Report</a>

由于

4 个答案:

答案 0 :(得分:3)

使用:

<a href="@Url.Action("Load", "Report", new { id = null })">Close Report</a>

有关详细信息,请参阅此answer

答案 1 :(得分:1)

我按照johnnyRose和Beyers的回答解决了这个问题。

结果是

<a href="@Url.Action("Load", "Report", new { id = "" }, null)">Close Report</a>

非常感谢。

答案 2 :(得分:0)

我似乎无法找到您的代码问题。但是,在尝试加载特定项目时,您不能简单地在模型中设置URL。 在控制器内部的加载函数中执行以下操作:

var urlBuilder =
new System.UriBuilder(Request.Url.AbsoluteUri)
    {
        Path = Url.Action("Load", "Report"),
        Query = null,
    };

   Uri uri = urlBuilder.Uri;
  string url = urlBuilder.ToString();
  YourModel.URL = url;

在view.cshtml中执行类似

的操作
  <a href="@Model.URL " target="_blank">reports</a>

答案 3 :(得分:0)

你应该查看你的智能感知 -

因为它接受参数 - ActionNameControllerNameRouteValues

enter image description here

routeValuesobject类型的第三个参数,它接受路由值,即new{id=9,name="foobar"}

方法如何 -

[HttpGet]
Public ActionResult Get(int id, string name)
{
}