【问题标题】:Get route {id} value in view?在视图中获取路线 {id} 值?
【发布时间】:2013-02-21 02:07:03
【问题描述】:

我知道如果我有类似/controller/action/{id} 的东西,我可以将 id 作为函数参数访问。但是如何在不使用 viewbag 的情况下通过视图访问它呢?

【问题讨论】:

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


    【解决方案1】:

    您可以将该函数参数作为模型的一部分传递给视图。该模型可以是静态或动态类型的。下面的示例代码演示了如何将值作为属性传递给动态模型。

    public ActionResult Edit(string id)
    {
        dynamic model = new System.Dynamic.ExpandoObject();
        model.Id = id;
        return View(model);
    
    }
    

    您可以按如下方式在视图中访问该值:

    @Model.Id
    

    【讨论】:

    • 太酷了。 +1。但是 viewbag 存在同样的问题,我需要对其进行类型转换(并将其分配到某处)。我猜在控制器之外没有原生方式
    • 您能更具体地说明您要完成的工作吗?我会帮你的。转换不是我提供的代码的问题。
    • 除了我所说的以外,别无其他。除了我自己,没有“问题”。我很懒;)
    • 啊——好的。凉爽的。快乐编码
    【解决方案2】:

    您可以在视图中解析 URL 以获取 ID:

    var id = Request.Url.LocalPath.SubString(LastIndexOf("/",Request.Url.LocalPath)+1);
    

    【讨论】:

    • 我不会用那个。如果我这样做/id?ping=pong。 int.parse 会爆炸。 ATM 我不记得用什么来获取带有 uri 的路径(没有查询)。
    • 只需使用 Request.Url.LocalPath 会忽略查询字符串。
    • 看起来正确。好的,它足够体面,所以我会+1,但直到稍后才会接受。 Request.Url.LocalPath.Substring(Request.Url.LocalPath.LastIndexOf("/")+1)
    • 哦,废话,当我尝试找出参数在哪里时,我无意中发现了它RenderBody("form.cshtml", "My random sz")
    【解决方案3】:

    它将直接放入ViewBag.id,或者您可以通过ViewData["id"] 访问它。嘿,好像是同一个对象

    【讨论】:

      猜你喜欢
      • 2014-03-05
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2019-06-18
      • 1970-01-01
      相关资源
      最近更新 更多