gpt4 book ai didi

asp.net-mvc - RemoteAttribute 没有将参数传递给操作?

转载 作者:行者123 更新时间:2023-12-04 02:10:50 25 4
gpt4 key购买 nike

我正在尝试使用 RemoteAttribute 来验证使用 JSON 的服务器端数据元素。我的数据字段是:

[Display(Name = "My Number")]
[Required]
[Remote("IsValidMyNumber","Home",ErrorMessage="Bummer")]
public string MyNumber { get; set; }

我的 Controller 是:

  public JsonResult IsValidMyNumber(string MyNumber)
{
var test = services.ValidateMyNumber(MyNumber);
return Json(test,JsonRequestBehavior.AllowGet);
}

我的观点是:

    <div class="editor-field">
@Html.EditorFor(model => model.CheckInformation.MyNumber)
@Html.ValidationMessageFor(model => model.CheckInformation.MyNumber)
</div>

生成的 HTML 是:

 <input class="text-box single-line" data-val="true" data-val-remote="Bummer" 
data-val-remote-additionalfields="*.MyNumber" data-val-remote-url="/Home/IsValidMyNumber"
data-val-required="The Number field is required." id="CheckInformation_MyNumber"
name="CheckInformation.MyNumber" type="text" value="" />

当我调试并进入我的 Controller 时,“MyNumber”参数为空,即使我在文本框中有它代表的文本。

我知道文本框中的名称必须与参数中的名称相同,我已经验证了这一点。

有什么想法吗?

最佳答案

似乎您的输入字段的生成名称是:

name="CheckInformation.MyNumber"

这可能是因为您的 View 模型是您在问题中显示的内容的父模型,并且您使用了以下内容:

@Html.TextBoxFor(x => x.CheckInformation.MyNumber)

因此请确保您已指定此前缀,否则默认模型绑定(bind)器将永远无法再水合这些值:

public ActionResult IsValidMyNumber([Bind(Prefix = "CheckInformation")] string myNumber)
{
var test = services.ValidateMyNumber(myNumber);
return Json(test, JsonRequestBehavior.AllowGet);
}

关于asp.net-mvc - RemoteAttribute 没有将参数传递给操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112985/

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