小编Prz*_*ław的帖子

MVC @Html.HiddenFor 呈现没有值的 html 表单

注意,在您阅读其余部分之前

这个问题与 POST方法、重新显示带有提交表单的视图或将输入值绑定到控制器方法参数无关。这纯粹是关于使用 html 帮助程序(HiddenForHidden - 两者返回相同)呈现视图


我使用HiddenFor助手创建了一个简单的隐藏字段

@Html.HiddenFor(m => m.ProductCode)
Run Code Online (Sandbox Code Playgroud)

我的问题是这个隐藏字段的值呈现为空:

<input id="productCode" name="productCode" type="hidden" value/>
Run Code Online (Sandbox Code Playgroud)

即使我在实例化模型时设置了它,当然它也通过调试得到确认(它总是有一个值)。
所以它应该是这样的:

<input id="productCode" name="productCode" type="hidden" value="8888888"/>
Run Code Online (Sandbox Code Playgroud)

因为我知道有一些像这样的问题(实际上所有这些问题都是指在表单 POST 期间更改表单值)我列出了我已经尝试过的事情。我的代码就在这部分的正下方,我认为这是必不可少的。


到目前为止,我尝试过:

  • ModelState.Clear() 无处不在 -因为我们知道来自 ModelState 的值是它寻找值的第一个地方没有我预期的效果,因为我的 ModelState 是空的(我的情况不是在控制器的 POST 期间更改值,就像许多类似的问题一样),所以它应该从我的视图模型中获取值。
  • 不使用HiddenFor助手,而是使用纯 html。WORKS,但它只是解决方法,而不是问题的答案。
  • 在视图中复制带有助手的行,如下所示:
@Html.HiddenFor(m => m.ProductCode)
@Html.HiddenFor(m => m.ProductCode)
Run Code Online (Sandbox Code Playgroud)

PARTIALLY WORKS产生第一个输入 asvalue/>和第二个 asvalue="8888888"/>这表明可能存在隐藏初始属性值的东西。无论如何, …

html c# hidden-field razor asp.net-mvc-5

5
推荐指数
1
解决办法
338
查看次数

ReSharper 以错误的方式检测到“Expression is always true”

ReSharper 似乎以一种非常简单(太简单)的方式解决了这种情况:

public ActionResult Payment()
{
    IOrder order = PaymentBase.GetOrderFromRequest(this.Request.Params); //this method can return null sometimes

    int payForm = order.PayForm;
    if (order != null)
        PaymentService.Check(order, "push", payForm);
    else
        LogsService.SaveDataLog(WebShopLogType.PaymentInfo, "order missing on push", (object)this.Request.Params.ToString(), "p");

    return new EmptyResult();
}
Run Code Online (Sandbox Code Playgroud)

我的空检查order != null标有“表达式始终为真”消息,因此我的整个else语句都被视为没有必要。

我发现这个假设是基于order.PayForm. ReSharper 假设调用对象的PayForm属性order意味着它肯定不为空。删除此行会消除“表达式始终为真”消息。

它显然应该int payForm = order.PayForm;“可能为空”消息来标记行。

这是一个错误还是我遗漏了什么?

.net c# resharper

0
推荐指数
1
解决办法
97
查看次数

标签 统计

c# ×2

.net ×1

asp.net-mvc-5 ×1

hidden-field ×1

html ×1

razor ×1

resharper ×1