2013-06-25 79 views
0

我在Country類(模型)中有以下兩個屬性。asp.net中編輯器模板中的遠程屬性mvc

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); 
} 

我使用編輯器模板國家類,@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

我改變了我的方法和使用的綁定屬性和現在的工作。

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); 
} 
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); 
} 
+0

不工作,country.Id即將爲0和 – Brij

+0

我剛剛創建我的機器上測試,它工作正常country.Name即將爲空。你如何提交你的數據? – jzm

+0

請求即將到來:GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1 – Brij