是否有充分的理由使用强类型的html助手...
<%: Html.DisplayTextFor(model => model.Email) %>
Run Code Online (Sandbox Code Playgroud)
而不是......
<%: Model.Email %>
Run Code Online (Sandbox Code Playgroud) 有没有HtmlHelper
人为ASP.NET MVC实现生成这些的扩展方法呢?可以使用接受的重载来执行此操作htmlAttributes
,例如:
Html.TextBoxFor(model => model.Foo, new { type="number", min="0", max="100" })
Run Code Online (Sandbox Code Playgroud)
但那并不像以下那样好(或类型安全):
Html.NumericInputFor(model => model.Foo, min:0, max:100)
Run Code Online (Sandbox Code Playgroud) 我有一个类型为List的模型的视图,我想在页面上放置一个下拉列表,其中包含列表中的所有字符串作为下拉列表中的项目.我是MVC的新手,我怎么做到这一点?
我试过这个:
@model List<string>
@Html.DropDownListFor(x => x)
Run Code Online (Sandbox Code Playgroud)
但那引发了一个错误.任何帮助表示赞赏.
我在C#和MVC上相当新,并且在某些场合使用过lambdas,例如匿名方法和LINQ.
通常我看到lambda表达式看起来像这样:
(x => x.Name), (x => { Console.WriteLine(x))
Run Code Online (Sandbox Code Playgroud)
我明白lambda ="去".我从未见过没有使用左参数的lambda表达式.
我不知道如何翻译这个lambda表达式
@Html.DisplayFor(modelItem => item.FirstName)
Run Code Online (Sandbox Code Playgroud)
任何人都可以为我揭开这一点吗?不应该这样
(modelItem => modelItem.FirstName)?
Run Code Online (Sandbox Code Playgroud)
我从Microsoft的ASP.NET MVC入门教程中得到了这个.
@Html.HiddenFor(model => model.title, new { id= "natureOfVisitField", @value = '@Model.title'})
Run Code Online (Sandbox Code Playgroud)
它不起作用!如何设定价值?
这是以下问题的后续内容:
MVC 3 + $ .ajax - 响应似乎是从部分视图缓存输出
那里有问题的详细描述.但是,我现在已经设法缩小了问题,这似乎与Html.EditorFor助手有关,因此是新问题.
问题:
我使用$ .ajax将数据发布到服务器,然后返回包含输入控件的部分视图的html.问题在于,尽管将新创建的对象传递给部分视图模型,但各种@ Html.EditorFor和@Html.DropDownListFor帮助程序返回OLD DATA!.
我可以通过在Html帮助器旁边打印出值来证明模型已正确地将新对象传递给帮助程序.即:
@Html.EditorFor(model => model.Transaction.TransactionDate)
@Model.Transaction.TransactionDate.ToString()
Run Code Online (Sandbox Code Playgroud)
如下图所示,@ Html.EditorFor返回错误的数据:
[请注意,Comentario文本框旁边的值是一个日期时间,因为我正在测试用每个帖子改变的值替换默认值,即DateTime.
如果我用一个普通的旧版@Html.TextBox()替换@Html.EditorFor for TransactionDate:
@Html.TextBox("Transaction_TransactionDate", Model.Transaction.TransactionDate)
Run Code Online (Sandbox Code Playgroud)
然后它为新的Transaction对象呈现正确的TransactionDate值,即DateTime.MinValue(01/01/0001 ...).
因此...
问题出在@ Html.EditorFor助手上.TextBoxFor和DropDownListFor也会出现问题.
问题是这些助手似乎缓存旧值.
我究竟做错了什么??!
我刚刚在自定义编辑器模板中尝试调试日期,在那里,ViewData.TemplateInfo.FormattedModelValue显示正确的值,即"01/01/0001".然而,一旦它到达Fiddler,响应将显示旧日期,例如上图中的"01/09/2011".
结果,我只是认为这里有一些缓存,但我没有设置,所以没有任何意义.
我有以下MVC 5 Razor HTML帮助器:
@Html.TextBoxFor(m => m.ShortName,
new { @class = "form-control", @placeholder = "short name"})
Run Code Online (Sandbox Code Playgroud)
我需要这个字段是必需的(例如,当用户导航而没有放置值值时,会有一个红色轮廓).在WebForms HTML 5中我可以说<input type="text" required />
具有这种效果.在Razor语法中实现此功能的正确语法是什么?
我正在编写我的第一个asp.net mvc应用程序,我对自定义Html帮助程序有疑问:
要制作表格,您可以使用:
<% using (Html.BeginForm()) {%>
*stuff here*
<% } %>
Run Code Online (Sandbox Code Playgroud)
我想用自定义HTML帮助器做类似的事情.换句话说,我想改变:
Html.BeginTr();
Html.Td(day.Description);
Html.EndTr();
Run Code Online (Sandbox Code Playgroud)
成:
using Html.BeginTr(){
Html.Td(day.Description);
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我想用生成Html.ActionLink
的HTML ID 生成,这样我就可以根据我的位置更改CSS.我有一MasterPage
组链接,我想区分活动的"Tab"和Jquery更改活动的#id的css
现在我正在使用:
<%: Html.ActionLink("Some View", "Index", "controller")%>
Run Code Online (Sandbox Code Playgroud)
它产生:
<a href="/controller">Some View</a>
Run Code Online (Sandbox Code Playgroud)
我想生成:
<a id="something" href="/controller">Some View</a>
Run Code Online (Sandbox Code Playgroud)
那可能吗?我试过了:
<%: Html.ActionLink("Some View", "Index", "controller", new {id="blahbla")%>
Run Code Online (Sandbox Code Playgroud)
但这会产生:
<a href="/controller/Length?5">Some View</a>
Run Code Online (Sandbox Code Playgroud) html-helper ×10
asp.net-mvc ×9
.net ×3
razor ×3
c# ×2
actionlink ×1
asp.net ×1
css ×1
html-input ×1
html5 ×1
jquery ×1
lambda ×1