0

我在 Country 类(模型)中有以下两个属性。

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.

我应该怎么做才能解决这个问题?

4

2 回答 2

0

它正在通过您的模型。因此,您JsonResult应该单独使用您的模型,Country而不是 Name 和 Id。

像这样:

public JsonResult CheckCountryName(Country country)
{
     return Json(!repository.Countries.Where(c => c.Id != country.Id)
                 .Any(c => c.Name == country.Name), 
                 JsonRequestBehavior.AllowGet);
}
于 2013-06-26T01:04:36.087 回答
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);
}
于 2013-06-27T10:06:09.513 回答