C# @Html.HiddenFor不将值传递给控制器

C# @Html.HiddenFor不将值传递给控制器,c#,asp.net-mvc,C#,Asp.net Mvc,我知道也有类似的问题。我读过几乎所有的书(除非有人能证明不是这样) 我正在编写一个帮助台应用程序作为一个实践项目,以提高我的编程技能 我有一个创建操作,创建一个“票证”,作为该操作的一部分,我希望将该“票证”的“状态”设置为“新建”。我希望禁用它的原因是,只有具有管理员角色的用户才能更新状态(Inprogress、onhold、resolved、closed等) 以下是我到目前为止所做的尝试: <div class="form-group"> @Html.LabelF

我知道也有类似的问题。我读过几乎所有的书(除非有人能证明不是这样)

我正在编写一个帮助台应用程序作为一个实践项目,以提高我的编程技能

我有一个创建操作,创建一个“票证”,作为该操作的一部分,我希望将该“票证”的“状态”设置为“新建”。我希望禁用它的原因是,只有具有管理员角色的用户才能更新状态(Inprogress、onhold、resolved、closed等)

以下是我到目前为止所做的尝试:

    <div class="form-group">
    @Html.LabelFor(model => model.State, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @if (User.IsInRole("Admin"))
        {
            @Html.DropDownListFor(m => m.State, Model.States, htmlAttributes: new { @class = "form-control" })
        }
        else
        {

            @Html.DropDownListFor(m => m.State, Model.States, new { @class = "form-control", @disabled = "disabled", @id = "FakeStates" })
            @Html.HiddenFor(m => m.State, Model.States)
        }
        @Html.ValidationMessageFor(model => model.State, "", new { @class = "text-danger" })
    </div>
    </div>

@LabelFor(model=>model.State,htmlAttributes:new{@class=“controllabel col-md-2”})
@if(User.IsInRole(“Admin”))
{
@DropDownListFor(m=>m.State,Model.States,htmlAttributes:new{@class=“form control”})
}
其他的
{
@DropDownListFor(m=>m.State,Model.States,new{@class=“form control”、@disabled=“disabled”、@id=“FakeStates”})
@HiddenFor(m=>m.State,Model.States)
}
@Html.ValidationMessageFor(model=>model.State,“,new{@class=“text danger”})
问题是: 该值没有到达控制器,db列的最终值为null

我可能忽略了一些简单的事情,如果是的话,请有人看一下并指出它

谢谢。

试试这个:

@Html.HiddenFor(m=>m.State,new{Value=Model.States})

ps:Model.States中有值吗?

试试这个:

@Html.HiddenFor(m=>m.State,new{Value=Model.States})


ps:Model.States中是否有值?

您需要重新排列元素的顺序,并将HiddenFor置于DropDownListFor之上

这是因为在提交表单时,将返回第一个id与模型匹配的输入

发布到控制器时,禁用的输入未返回,这也毫无意义。所以我相信现在发生的是你的禁用下拉列表在隐藏之前被发现,因此提交了一个空值

我注意到您尝试向DropDownListFor添加不同的id,但是我不确定这在正确的模型绑定方面是如何工作的


另一种选择是显示标签,而不是禁用的下拉列表。

您需要重新排列元素的顺序,并将HiddenFor置于DropDownList For之上

这是因为在提交表单时,将返回第一个id与模型匹配的输入

发布到控制器时,禁用的输入未返回,这也毫无意义。所以我相信现在发生的是你的禁用下拉列表在隐藏之前被发现,因此提交了一个空值

我注意到您尝试向DropDownListFor添加不同的id,但是我不确定这在正确的模型绑定方面是如何工作的


另一种选择是显示标签,而不是禁用的下拉列表。

您使用禁用的下拉列表而不仅仅是带有值的显示器的原因是什么?您使用禁用的下拉列表而不仅仅是带有值的显示器的原因是什么?