記錄HTML Helpers TextAreaFor使用方式
在讀奚江華老師的MVC Ch7時,看到範例介紹了@Html.TextArea和@Html.TextAreaFor,發現:
@Html.TextArea("Model中的物件" , "預設內容" , 長 , 寬 , new { @class = "form-control"})
可以清楚的填入預設內容,但@Html.TextAreaFor卻只能建立一個無內容的文字方塊,想依樣畫葫蘆卻發現Error「方法沒有任何多載使用5個引數」,於是就好奇地就找了一下,使用 VS的F12檢視後,才發現這個預設內容還要包成物件,再一起傳過來才行.(目前這部分的lambda表達式尚未研究,待以後完全看懂補上)
public static MvcHtmlString TextAreaFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, int rows, int columns, IDictionary<string, object> htmlAttributes);.
雖然自己才初學MVC,但總得想辦法解決問題!
搜尋StackOverflow後,發現以往有人問過這個問題:https://stackoverflow.com/questions/16645794/add-text-in-html-textareafor-mvc-4,見獵心喜,馬上套用以解決我的問題,示意程式碼如下,其中省略了using及部分通用namespace和Controller繼承項:
//Model
public class User
{
[Required(ErrorMessage ="Name必須輸入!")]
public string Name { get; set; }
[Display(Name = "暱稱")]
}
//Controller
public ActionResult Practice()
{
var model = new User(); //在Controller中需新增的部分,將原Model中Uer的資料,再建立一個物件傳入View(cshtml)中
model.Name = "預設檢視的內容";
return View(model);
}
//View (Practice.cshtml)
@Html.TextAreaFor(m => m.Name, 10, 80, new { @class = "form-control" })