C# MVC4-使用标准<;输入>;HTML帮助程序旁边的文本框

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

我喜欢MVC 4使用已定义的HtmlHelpers生成视图的方式:

    <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
});
});

你可以发布你的
零件
类吗?谢谢,那么你的
零件
文本框应该映射到哪个属性?它应该映射到哪个属性