簡體   English   中英

如何從字符串在ASP.NET MVC中創建UserControl

[英]How do I create a UserControl in ASP.NET MVC from a string

假設我想從原始字符串而不是.ascx文件創建用戶控件,我該怎么做? 臨時文件不是一個選擇。 這有可能嗎? 我在網上找不到任何有關此的信息。

獎勵:我將如何使用新的剃須刀引擎執行此操作?

我認為您就像我一樣,從普通的asp.net移至該MVC。

在asp.net mvc中,我們使用HTML幫手,例如@Html.ActionLink()@Html.CheckBox()@Html.CheckBox()您可以通過創建這樣的類來添加自己的擴展名,例如@Html.Grid() 。 :

using System;
using System.Web.Mvc;

namespace MyNamespace.Helpers
{
     public static class GridExtensions
     {
          public static string Grid(this HtmlHelper helper, <any parameter you think to generate the html>)
          {
               // render the html table here based on the parameter
          }
     }
}

如果願意,可以將此類文件放在根目錄下的Helpers文件夾中。 看到這個來創建自定義擴展。 您可以找到最好的jQuery,如jqGrid並在擴展中實現它。

如果您認為擴展名不合適,則可以使用格式為@ class.method()的類來返回html字符串。 不要忘了在vcshtml視圖文件的開頭或在〜/ View / web.config中在Razor程序集名稱旁邊使用@using MyNamespace,以確保該類或擴展名可用。 它還將支持智能感知。

如果要定義在同一個* .cshtml文件中的“用戶控件”,因為它只是特定的視圖,只需使用@helper function()為ScottGu說, 在這里 ,將通過打電話只是盡量減少頁面的代碼@function()

Control asp.net和asp.net mvc完全不同。 您不能使用任何從普通asp.net到asp.net mvc的控件。

編輯 :一些錯字並添加更多信息。

您可以為此使用自定義HTML幫助程序,不是嗎?

看一下“ 模板化剃刀代表” 似乎正是您所需要的

解決方案是使用VirtualPathProvider為控件提供文本。 范例: http//www.thecodinghumanist.com/Content/VirtualPathProviderExample.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM