Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC远程验证中的问题_C#_Asp.net_Asp.net Mvc_Validation_Razor - Fatal编程技术网

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
函数上设置断点,并检查值。