C# MVC远程验证中的问题
我的代码是这样的C# MVC远程验证中的问题,c#,asp.net,asp.net-mvc,validation,razor,C#,Asp.net,Asp.net Mvc,Validation,Razor,我的代码是这样的 public class Payer { public int PayerId { get; set; } [Remote("PayerNameExists", "Payer", "Payer name already exists.", AdditionalFields = "PayerID"), Required] public string Name { get; set; } public double PatientContri
public class Payer
{
public int PayerId { get; set; }
[Remote("PayerNameExists", "Payer", "Payer name already exists.", AdditionalFields = "PayerID"), Required]
public string Name { get; set; }
public double PatientContribution { get; set; }
}
内部控制器
public JsonResult PayerNameExists(string Name,int PayerID=0)
{
var user = db.Payer.Where(x => x.Name == Name.Trim()&&x.PayerId!=PayerID);
return !user.Any() ?
Json(true, JsonRequestBehavior.AllowGet) :
Json(string.Format("{0} is already exists.", Name),
JsonRequestBehavior.AllowGet);
}
并在视图中(编辑
)
我的问题是,在函数PayerNameExists
PayerID
中,我希望得到我的模型ID。有人能告诉我怎样才能做到这一点吗
注意:从客户端发送的数据在此
/付款人/PayerNameExists?区域=付款人%20名称%20%20已存在%20。名称=ICICIx&PayerRID=未定义
您的问题是
PayerID
和PayerID
中的未匹配项:
AdditionalFields = "PayerID"
它必须是这样的:
AdditionalFields = "PayerId"
public JsonResult PayerNameExists(string Name,int PayerId=0)
你的方法必须是这样的:
AdditionalFields = "PayerId"
public JsonResult PayerNameExists(string Name,int PayerId=0)
或将您的模型更改为:
public int PayerID { get; set; }
更新
如前所述,我需要将模型更改为PayerID
,以使其正常工作,但并非所有人都同意,因为它被否决了
但是,我还需要做以下工作:
<input data-val="true" data-val-remote="'Name' is invalid." data-val-remote-additionalfields="*.Name,*.PayerID" data-val-remote-url="/Home/PayerNameExists" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="Name" class="input-validation-error">
提供Html.Helper
将PayerID
发回,即@Html.HiddenFor(model=>model.PayerID)
,否则它将成为默认值
如果出现未指定的错误,则可能需要检查呈现的html,它需要具有以下内容:
<input data-val="true" data-val-remote="'Name' is invalid." data-val-remote-additionalfields="*.Name,*.PayerID" data-val-remote-url="/Home/PayerNameExists" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="Name" class="input-validation-error">
也可以从更新中渲染链接,即
/Payer/PayerNameExists?area=Payer%20name%20%20already%20exists.&Name=ICICIx&PayerID=undefined
它会将您想要的错误消息作为区域路由值拾取,所以请按照我上面提到的删除它
屏幕截图
为什么在
public JsonResult PayerNameExists(字符串名,int PayerID=0)中将玩家Id指定为0
。。。删除此选项,然后重新在视图中为PayerID
呈现控件吗e、 g.@Html.HiddenFor(m=>m.PayerID)
?可能缺少绑定属性@斯蒂芬·穆克:是的。我正在渲染it@Juan尝试不工作尝试,仍然是相同的错误。从客户端发送,就像PayerID一样=undefined@Athul只需将模型改为匹配PayerID
,它就会将其选中。@Athul,DefaultModelBinder
不区分大小写,因此参数名可以是PayerID
,它会绑定,但javascript是,因此,如果属性名称是PayerId
,则它需要是AdditionalFields=“PayerId”
。如果这不能解决问题,请使用浏览器工具在jquery.validate.js中的remote
函数上设置断点,并检查值。