Html.TextAreaFor如何新增預設文字內容

  • 1665
  • 0

記錄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" })