C# MVC4-使用标准<;输入>;HTML帮助程序旁边的文本框
我喜欢MVC 4使用已定义的HtmlHelpers生成视图的方式:C# MVC4-使用标准<;输入>;HTML帮助程序旁边的文本框,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我喜欢MVC 4使用已定义的HtmlHelpers生成视图的方式: <div class="editor-label"> @Html.LabelFor(model => model.PartId) </div> <div class="editor-field"> @Html.EditorFor(model => model.PartId) @Html.ValidationMe
<div class="editor-label">
@Html.LabelFor(model => model.PartId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PartId)
@Html.ValidationMessageFor(model => model.PartId)
</div>
零件类,它是窗体上的子对象。用户将在表单中输入匹配代码,但页面需要保存零件对象:
public partial class Part
{
public Part()
{
this.Counts1 = new HashSet<Count>();
}
public System.Guid Id { get; set; }
public string PartNumber { get; set; }
public string Matchcode { get; set; }
public string Unit { get; set; }
public virtual ICollection<Count> Counts1 { get; set; }
}
公共部分类部分
{
公共部分()
{
this.Counts1=新的HashSet();
}
public System.Guid Id{get;set;}
公共字符串零件号{get;set;}
公共字符串匹配码{get;set;}
公共字符串单元{get;set;}
公共虚拟ICollection Counts1{get;set;}
}
Count类是主父类:
public partial class Count
{
public System.Guid Id { get; set; }
public Nullable<System.Guid> LocationId { get; set; }
public Nullable<System.Guid> PartId { get; set; }
public Nullable<System.Guid> UnitId { get; set; }
public string DocumentNumber { get; set; }
public virtual Location Location { get; set; }
public virtual Part Part { get; set; }
public virtual Unit Unit { get; set; }
}
公共部分类计数
{
public System.Guid Id{get;set;}
公共可空位置ID{get;set;}
公共可空PartId{get;set;}
公共可为空的UnitId{get;set;}
公共字符串DocumentNumber{get;set;}
公共虚拟位置{get;set;}
公共虚拟部分{get;set;}
公共虚拟单元单元{get;set;}
}
HtmlHelpers最终呈现普通HTML,因此“标准输入字段”呈现的HTML与HtmlHelpers呈现的HTML没有区别
如果您可以让代码使用helpers将所有正确的参数传递给控制器,那么您应该能够在浏览器中“查看源代码”,并将HTML复制到视图中。如果这样做,那么最终传递给控制器的值应该是相同的,只要浏览器接收的HTML在这两种情况下是相同的,那么对控制器的调用应该是相同的。HtmlHelpers最终呈现普通HTML,因此“标准输入字段”呈现的HTML与HtmlHelpers呈现的HTML之间没有区别 如果您可以让代码使用helpers将所有正确的参数传递给控制器,那么您应该能够在浏览器中“查看源代码”,并将HTML复制到视图中。如果这样做,则最终传递给控制器的值应相同,只要浏览器在两种情况下接收的HTML相同,则对控制器的调用应相同。此部分: 但对于一个字段,我添加了jQuery自动完成,现在文本框采用了标准输入字段的形式:
<div class="editor-label">
@Html.LabelFor(model => model.PartId)
</div>
<div class="editor-field">
<input type="text" id="parts" name="parts" />
</div>
没有道理
没有什么能阻止您使用HTML助手,然后对其应用jQuery自动完成
您所需要的只是控件的id
,您可以自己提供
@Html.TextBoxFor(model => model.PartId, new { id = "parts" })
因此,您有一个硬编码的id字符串要传递给jQuery,或者反过来,将MVC选择的id传递给jQuery,而不知道它是什么:
$(“#@Html.IdFor(model=>model.PartId)”).autocomplete();
如果要保留编辑器for
而不是文本框for
,也可以这样做:
@Html.EditorFor(model => model.PartId, new { htmlAttributes = new { id = "parts" }})
但是,您必须确保您的编辑模板实际呈现文本字段
您也可以使用“标准输入文本框”:
此部分:
但对于一个字段,我添加了jQuery自动完成,现在文本框采用了标准输入字段的形式:
<div class="editor-label">
@Html.LabelFor(model => model.PartId)
</div>
<div class="editor-field">
<input type="text" id="parts" name="parts" />
</div>
没有道理
没有什么能阻止您使用HTML助手,然后对其应用jQuery自动完成
您所需要的只是控件的id
,您可以自己提供
@Html.TextBoxFor(model => model.PartId, new { id = "parts" })
因此,您有一个硬编码的id字符串要传递给jQuery,或者反过来,将MVC选择的id传递给jQuery,而不知道它是什么:
$(“#@Html.IdFor(model=>model.PartId)”).autocomplete();
如果要保留编辑器for
而不是文本框for
,也可以这样做:
@Html.EditorFor(model => model.PartId, new { htmlAttributes = new { id = "parts" }})
但是,您必须确保您的编辑模板实际呈现文本字段
您也可以使用“标准输入文本框”:
Part是页面上的子类。如何从存储子对象
父类
所以
@model Mvc.Models.YouParentModel
<div class="editor-label">
@Html.LabelFor(model => model.Part.PartId)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Part.Matchcode, , new { id = "autocompleteField" })
</div>
@model Mvc.Models.YouParentModel
@LabelFor(model=>model.Part.PartId)
@Html.TextBoxFor(model=>model.Part.Matchcode,新的{id=“autocompleteField”})
然后在javascript代码中,将自动补码器附加到$(“#autocompleteField”)
例如:
<script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#autocompleteField" ).autocomplete({
source: availableTags
});
});
</script>
$(函数(){
var availableTags=[
“动作脚本”,
“AppleScript”,
“Asp”,
“基本”,
“C”,
“C++”,
“Clojure”,
“COBOL”,
“ColdFusion”,
“二郎”,
“Fortran”,
“好极了”,
“哈斯克尔”,
“爪哇”,
“JavaScript”,
“口齿不清”,
“Perl”,
“PHP”,
“Python”,
“红宝石”,
“斯卡拉”,
“方案”
];
$(“#自动完成字段”).autocomplete({
资料来源:availableTags
});
});
Part是页面上的子类。如何从存储子对象
父类
所以
@model Mvc.Models.YouParentModel
<div class="editor-label">
@Html.LabelFor(model => model.Part.PartId)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Part.Matchcode, , new { id = "autocompleteField" })
</div>
@model Mvc.Models.YouParentModel
@LabelFor(model=>model.Part.PartId)
@Html.TextBoxFor(model=>model.Part.Matchcode,新的{id=“autocompleteField”})
然后在javascript代码中,将自动补码器附加到$(“#autocompleteField”)
例如:
<script>
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$( "#autocompleteField" ).autocomplete({
source: availableTags
});
});
</script>
$(函数(){
var availableTags=[
“动作脚本”,
“AppleScript”,
“Asp”,
“基本”,
“C”,
“C++”,
“Clojure”,
“COBOL”,
“ColdFusion”,
“二郎”,
“Fortran”,
“好极了”,
“哈斯克尔”,
“爪哇”,
“JavaScript”,
“口齿不清”,
“Perl”,
“PHP”,
“Python”,
“红宝石”,
“斯卡拉”,
“方案”
];
$(“#自动完成字段”).autocomplete({
资料来源:availableTags
});
});
你可以发布你的零件
类吗?谢谢,那么你的零件
文本框应该映射到哪个属性?它应该映射到哪个属性