2012-11-13 43 views
0

我目前使用的代碼的HTML幫助是這樣的:如何創建MVC

@Html.LabelFor(model => model.MaxExecutions) 
<div class="input-append"> 
    @Html.TextBoxFor(model => model.MaxExecutions, new { @class = "input-xxlarge", placeholder="Enter Max Executions" }) 
    <span class="add-on"><a href='#' class='title' rel='tooltip' title="Help Title" data-content="Help Message">?</a></span> 
    @Html.ValidationMessageFor(model => model.MaxExecutions) 
</div> 

我在我的代碼在重複這種過度&。我很想把它傳遞給HtmlHelper。我傳入的模型的類型可以改變,我想從模型中獲得Display屬性(或者我只是生成一個htmlstring)。

回答

1

您可以實現擴展方法或幫助器(靜態)類,但有時我喜歡聲明性版本(CSHTML)。無論哪種方式的工作原理,可以從控制器傳來傳去,等

〜/ App_Code文件/ Blah.cshtml

@helper ExecuteHelper() { 
    @Html.LabelFor(model => model.MaxExecutions) 
    <div class="input-append"> 
     @Html.TextBoxFor(model => model.MaxExecutions, new { @class = "input-xxlarge", placeholder="Enter Max Executions" }) 
    <span class="add-on"><a href='#' class='title' rel='tooltip' title="Help Title" data-content="Help Message">?</a></span> 
    @Html.ValidationMessageFor(model => model.MaxExecutions) 
    </div> 
} 

然後調用它就像觀點:

@Blah.ExecuteHelper() 

我注意到了您擁有它的HTML數量,這就是爲什麼我選擇了@helper語法解決方案的原因。這裏有Scott Guthrie的一篇文章概述了這個MVC功能: Article

+0

絕對不知道你可以任意定義和執行這樣的代碼。當然是一個新的工具,以增加我的腰帶。我仍然不確定如何「泛化」這個以使用任何模型類型和相關的屬性,儘管......任何想法? –

+0

對於遲到的回覆很抱歉,但您可以嘗試將模型添加爲將在助手內部使用的參數。這將是@ Blah.ExecuteHelper(模型) –