我试图研究一下,但还没有找到适当的解决方案。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