我試圖研究一下,但還沒有找到適當的解決方案。Razor MVC返回HTML
我試圖做的是有一個HTML.Action在頁面像這樣
Html.Action("Calendar", "GlobalShared")
裏面的行動「日曆」,我需要回到傳統的日曆的HTML的結果控制
public ActionResult Calendar(
String ID,
String CssClass,
int CellSpacing,
int CellPadding,
String BorderWidth,
String ShowGridLines,
String ShowTitle,
String DayNameFormat
)
{
System.Web.UI.WebControls.Calendar cal = new System.Web.UI.WebControls.Calendar();
cal.ID = "MyCalendar";
cal.CssClass = "month-view";
cal.CellSpacing = 0;
cal.CellPadding = -1;
cal.BorderWidth = 0;
cal.ShowGridLines = false;
cal.ShowTitle = false;
cal.DayNameFormat = System.Web.UI.WebControls.DayNameFormat.Full;
}
我該怎麼做?順便說一句,我使用HTML.Action是因爲我讀它返回一個HTML字符串,是否正確或我應該做一些其他方式?
謝謝
編輯。我試圖在這個控制器之前,我嘗試下面的代碼在視圖.cshtml和它的作品,但我更喜歡的代碼移動到一個控制器
@{
System.Web.UI.WebControls.Calendar cal = new System.Web.UI.WebControls.Calendar();
cal.ID = "MyCalendar";
cal.CssClass = "month-view";
cal.CellSpacing = 0;
cal.CellPadding = -1;
cal.BorderWidth = 0;
cal.ShowGridLines = false;
cal.ShowTitle = false;
cal.DayNameFormat = System.Web.UI.WebControls.DayNameFormat.Full;
cal.RenderControl(new HtmlTextWriter(Html.ViewContext.Writer));
}
編輯#2。我想在控制器中使用它的原因是,如果將來我想連接一個名爲「DayRender」的事件,我可以在控制器中完成。我不能在視圖中做同樣的事情而不會污染視圖頁面。
這是不正確的。 'Html.Action'爲鏈接的HTML代碼生成一個鏈接,其URL與控制器中的操作方法相對應。它不用於製作自定義HTML字符串。如果你需要構建HTML,你可以在視圖本身中構建它。試圖在內存中渲染一些舊的Web控件並輸出呈現的HTML將會產生非常複雜和雜亂的代碼,並且可能根本不會最終工作。 – David
大衛,我無法找到一個與Thread.CurrentThread.CurrentCulture開箱即用的日曆控件,例如我只想使用Calendar控件將正確的html輸出到頁面。 – Liming
我不認爲在MVC中有任何使用Web窗體控件的方式,所以如果您絕對需要使用Web窗體控件,那麼您運氣不好。你也許可以構建自己的日曆。或者Google搜索「ASP.NET MVC日曆」會返回(預計)很多結果。 Telerik產品通常特別好。 – David