我想知道是否可以在ASP.NET MVC 2中创建自定义强类型HTML Helper?创建一个常规(读取非强类型)帮助器很简单,但我很难创建强类型版本.例如,我想创建一个DatePickerFor html帮助器...
任何指导或片段将不胜感激,谢谢你提前!J.P
如果html帮助器将idictionary作为参数,我该如何使用它?
我试过了:
<%= Html.Blah( new { id = "blah" }) %>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我正在开发一个asp.net mvc-5 Web应用程序.我有以下模特课: -
public class Details4
{
[HiddenInput(DisplayValue=false)]
public string RESOURCENAME { set; get; }
[Display (Name="Account Name")]
[Required]
public string ACCOUNTNAME { set; get; }
[Display(Name = "Resource type")]
[Required]
public string RESOURCETYPE { set; get; }
[DataType(DataType.Password)]
[Required]
public string PASSWORD { set; get; }
[Display(Name = "Description")]
[DataType(DataType.MultilineText)]
public string Description { set; get; }
[Display(Name= "URL")]
[Url]
public string RESOURCEURL { set; get; }
[Display(Name="Owner Name")]
[Required]
public string OWNERNAME { set; get; }
[Display(Name …Run Code Online (Sandbox Code Playgroud) 怎么了?viewmodel变量是一个值为true的bool.
<%= Html.HiddenFor(m => m.TheBool) %>
<%= Html.Hidden("IsTimeExpanded",Model.TheBool) %>
<input type="hidden" value="<%=Model.TheBool%>" name="TheBool" id="TheBool">
Run Code Online (Sandbox Code Playgroud)
结果是:
<input id="TheBool" name="TheBool" value="False" type="hidden">
<input id="TheBool" name="TheBool" value="False" type="hidden">
<input value="True" name="TheBool" id="TheBool" type="hidden">
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?为什么助手不按预期工作?
我正在尝试将焦点设置在以下列方式生成的文本框中:
<%=Html.TextBoxFor(model => model.Email, new { style = "width:190px;Border:0px", maxsize = 190 })%>
Run Code Online (Sandbox Code Playgroud)
我试图使用javascript,这没有多大帮助:
<script type="text/javascript">
var txtBox = document.getElementById("Email");
if (txtBox != null) txtBox.focus();
</script>
Run Code Online (Sandbox Code Playgroud)
如何将焦点设置为mvc 2中的文本框Html.TextBoxFor?
这可能很简单,但我似乎无法自己解决.我创建了一个简单的数据库和实体模式,看起来像这样

我正在尝试创建一个允许我添加新订单的创建表单.我总共有3个表,所以我想要的是允许此人输入订单日期的表单,还有一个下拉列表,允许我从产品表中选择一个产品
我希望能够创建一个Add或Edit视图,允许我将OrderDate插入OrderTable,并将OrderID和选定的ProductID插入OrderProduct.
我需要在这做什么步骤.
我创建了一个OrderController并勾选了"添加操作",然后添加了一个看起来像这样的Create View
@model Test.OrderProduct
@{
ViewBag.Title = "Create2";
}
<h2>Create2</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>OrderProduct</legend>
<div class="editor-label">
@Html.LabelFor(model => model.OrderID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.OrderID)
@Html.ValidationMessageFor(model => model.OrderID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProductID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ProductID)
@Html.ValidationMessageFor(model => model.ProductID)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Run Code Online (Sandbox Code Playgroud)
这将创建包含OrderID和ProductID文本框的视图,但不包含日期.
我的控制器CreatePost还没有改变
[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{ …Run Code Online (Sandbox Code Playgroud) 目前我在默认的"创建"视图页面中使用Html.EditorFor控件.
<%: Html.EditorFor(model => model.IsActive) %>
Run Code Online (Sandbox Code Playgroud)
我想将其转换为带有值的下拉列表,并且仍然绑定到视图中的模型.我的问题是双重的.
如果下拉列表中只需要2/3值.是否有快速方法可以明确填充2或3个值?
如果列表很大并且需要来自sql查询,该怎么做?
在此先感谢您的帮助.
我对当前的DropDownList实现不满意,因为我对选项标签不能做太多(仅支持选中,支持文本和值).我想在我可以设置禁用和其他个人选项的地方.
目前我正在通过javascript改变选项,但我认为这有点像一种hacky方式,我宁愿只是渲染正确的html开始.
我知道我可以创建一个使用select和option标签的模板,并根据需要制作选项 - 但是正常的DropDownList扩展添加了val的东西以及特定的名称和ID,我想在提交表单时是正确的数据绑定:
<select data-val="true" data-val-number="The field SelectedValue must be a number." id="ParentDropDown_SelectedValue" name="ParentDropDown.SelectedValue">
Run Code Online (Sandbox Code Playgroud)
如何将这些属性添加到我自己的模板中?
我有以下Action方法,它有一个带有字符串列表的viewBag: -
public ActionResult Login(string returnUrl)
{
List<string> domains = new List<string>();
domains.Add("DomainA");
ViewBag.ReturnUrl = returnUrl;
ViewBag.Domains = domains;
return View();
}
Run Code Online (Sandbox Code Playgroud)
在视图上我试图建立一个下拉列表,显示viewBag字符串如下: -
@Html.DropDownList("domains",(SelectList)ViewBag.domains )
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误: -
无法将类型'System.Collections.Generic.List'转换为'System.Web.Mvc.SelectList'
那么有人可以为什么我不能填充我的DropDown列表中的蜇伤列表?谢谢
该视图假设显示一个超链接列表,每个超链接指向一个外部URL.目标是让用户单击其中一个链接并让浏览器打开包含所选URL的新选项卡.目前我有以下标记:
@Html.ActionLink("SomeSite", "http://subdomain.mydomain.com/SomeSite")
Run Code Online (Sandbox Code Playgroud)
此标记产生:
http://localhost:58980/AccessInstance/http%3a/subdomain.mydomain.com/SomeSite
Run Code Online (Sandbox Code Playgroud)
代替 :
http://subdomain.mydomain.com/SomeSite
Run Code Online (Sandbox Code Playgroud)
我可以在标记中更改哪些内容以使其按预期工作?
html-helper ×10
asp.net-mvc ×8
asp.net ×3
c# ×3
razor ×3
.net ×1
css ×1
editorfor ×1
focus ×1
html ×1
javascript ×1