我在Country类(Model)中有以下两个属性。
public class Country
{
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
[Required]
[Remote("CheckName", "Country", AdditionalFields = "Id")]
public string Name { get; set; }
}
上面我希望将Id
传递给CheckName
方法。
我在CheckName
中使用CountryController
方法作为:
public JsonResult CheckCountryName(string Name, int Id = 0)
{
return Json(!repository.Countries.Where(c => c.Id != Id).Any(c => c.Name == Name), JsonRequestBehavior.AllowGet);
}
我正在使用Country类的编辑器模板@Html.EditorFor(m => m.Country)
Id属性被ID作为Country_Id呈现为隐藏字段,名称为Country.Id。当我编辑名称字段时,CheckName
没有获得所需的值(名称变为空,而Id变为0(作为默认值))
我在Fiddler中检查过,请求将作为GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1
发送到服务器。
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
它正在传递你的模型。因此,JsonResult
应该使用您的模型Country
,而不是单独使用名称和ID。
像这样:
public JsonResult CheckCountryName(Country country)
{
return Json(!repository.Countries.Where(c => c.Id != country.Id)
.Any(c => c.Name == country.Name),
JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:0)
我改变了我的方法并使用了Bind属性,现在它可以正常工作。
public JsonResult CheckCountryName([Bind(Prefix="Country")]Country oCountry)
{
return Json(!repository.Countries.Where(c => c.Id != oCountry.Id).Any(c => c.Name == oCountry.Name), JsonRequestBehavior.AllowGet);
}