2011-10-04 95 views
0

如何在提交表單後獲取表單域ID。即時嘗試像這樣:將模板信息導入控制器

ViewData.TemplateInfo.GetFullHtmlFieldId(logOnParts.Part.UserNameOrEmail) 

但在控制器端沒有工作。我需要得到「Part_UserNameOrEmail」東西..

if (String.IsNullOrEmpty(logOnParts.Part.UserNameOrEmail)) 
{ 
    ModelState.AddModelError("Part_UserNameOrEmail", "error"); 
    TempData["logon-focus-field"] = "Part_UserNameOrEmail"; 
} 

,所以我將重點領域的看法方面是這樣的:

$(document).ready(function() { 
    $('#TempData["logon-focus-field"]').focus(); 
}); 
+2

爲什麼?控制器不應該需要這個。 – SLaks

+0

實際上我試圖在控制器端進行驗證時將失敗的字段設置爲焦點。所以我需要得到的字段名稱是嗎?我需要在驗證後發佈TempData [「logon-focus-field」] =「logOn_Part_UserNameOrEmail」以查看端。 –

+0

您是否使用內置驗證?如果是這樣,你的領域應該用'input-validation-error' css類來修飾。使用javascript來設置它的焦點。 – jrummell

回答

0

控制器絕對不應該需要這樣的信息。生成的id是一個視圖特定的信息。如果你在控制器中需要這個,這就意味着你的應用程序有一些嚴重的設計問題。不幸的是,由於您尚未在問題中解釋您的情況,所以很難幫助您解決此問題。所以在你的控制器中,你可以這樣做:

Expression<Func<MyViewModel, string>> expression = x => x.Part.UserNameOrEmail; 
string name = ExpressionHelper.GetExpressionText(expression); 
string id = new TemplateInfo().GetFullHtmlFieldId(name); 
+0

好吧,它的作品。即時嘗試設置重點字段失敗時手動驗證沒有ClientValidation或UnobtrusiveJavaScript。 –

+0

我更新了我的問題。你能給一個建議嗎? –