【发布时间】:2017-09-09 19:32:48
【问题描述】:
我的“未增强”代码如下所示:
@using (Html.BeginForm("Index", "home"))
{
<!-- old group -->
<div class="form-group">
@Html.LabelFor(m => m.Query.artist)
@Html.TextBoxFor(m => m.Query.artist, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Query.artist)
</div>
...
}
但我想增强它并为每个form-group 添加一个切换功能,如下所示:
<script>
var toggleProperty = function(targetCheckbox) {
var id = targetCheckbox.id.split('-')[0];
var inputDiv = document.getElementById(id + "-inputdiv");
inputDiv.style.display = (inputDiv.style.display !== "none") ? "none" : "";
}
</script>
<!-- new group -->
<input type="checkbox" id="property1-toggler" value="false" onchange="return toggleProperty(this)"/> <label for="property1">name for property1</label>
<div id="property1-inputdiv">
<input class="form-control" id="property1" name="property1" type="text" value="property1 default value">
<span class="field-validation-valid" data-valmsg-for="property1" data-valmsg-replace="true"></span>
</div>
我想知道in the aspnet mvc source code 在哪里可以找到LabelFor 等的代码。
这样我可以更好地理解它的工作原理,并创建一个扩展函数,例如:
public static IHtmlContent FullGroupFor<TModel, TResult>(this IHtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression);
【问题讨论】:
-
创建一个调用
LabelFor的新扩展会更容易吗?从那个结果开始,然后在新的扩展方法中添加你的东西? -
@krillgar 感谢您的提示,经过一些工作我已经发布了a solution to the problem。
标签: c# asp.net-mvc asp.net-core