gpt4 book ai didi

.net - 使用路由 ID 值的 ASP.NET MVC 3 模型 ID

转载 作者:行者123 更新时间:2023-12-04 23:30:44 24 4
gpt4 key购买 nike

场景
路线:/template/customize/10
其中:10 = 模板 ID()

在 Controller 中,模型是基于模板创建的,因此 View 的模型实际上是一个 Customization() 对象,它的 Id 实际上为 0,因为它是新的。

在 View 中,我呈现 @Html.HiddenFor( m => m.Id ) 并且该隐藏输入的结果值为 10 ,虽然应该是 0 因为 m 是自定义类型。我之前在 MVC 2 中遇到过这个问题,并通过不使用辅助方法解决了这个问题。

问题

  • 有没有注释或者什么我
    可以添加到 Html Helper 方法中
    实际上呈现正确的值?
  • 这是一个错误吗(MVC 似乎是
    将 m.Id 渲染为路由值
    不管实际型号是什么
    在 Controller 中设置为)?

  • 用于澄清的附加代码

    查看
    @model Project.Core.Domain.Customization
    @using( Html.BeginForm( "save", "customization" ) )
    {
    @Html.HiddenFor( m => m.Id )
    @Html.HiddenFor( m => m.Template.Id )
    <button type="submit" id="save" name="save">Save</button>
    }

    Controller
           public ActionResult Customize( int id )
    {
    var template = Persistence.Data.RetrieveObject<Template>( id );
    var model = new Customization();

    ViewBag.Template = template;
    return ( View( model ) );
    }

    解决方案

    将 Action 的签名更改为:
    public ActionResult Customize( int TemplateId ){ ... }

    更改了操作链接,如下所示:
    @Html.ActionLink( "customize", "customize", new { TemplateId = template.Id } )

    我最终得到一个看起来像的网址
    /template/customize?TemplateId=10

    它更丑,但我可以用 model.Id 保持我的观点干净,所以这对我来说是一个胜利。

    最佳答案

    在这种情况下,您始终可以选择不使用 HTML Helper,而是使用纯 HTML:

    <input name="Id" id="Id" type="hidden" value="@Model.Id"/>

    关于.net - 使用路由 ID 值的 ASP.NET MVC 3 模型 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315926/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com