2016-08-23 59 views
-1

我尝试修改编辑器模板以使用数据注释。我有一些奇怪的事情。这里在editorTemplate下面。MVC 5:NameForModel呈现两次字段的名称和ID

@model Translations<string> 

@{ 

    Translation<string> t = null; 
    if (Model != null && Model.Values != null) 
    { 
     t = Model.Values.FirstOrDefault(p => p.Language == KalowContext.Instance.CurrentLanguage); 
    } 
    t = t ?? new Translation<string>(); 

    var validationAttributes = Html.GetUnobtrusiveValidationAttributes(""); 
} 

@Html.TextBox(Html.NameForModel().ToString(), t.Value, new RouteValueDictionary(validationAttributes) 
    { 
     { "class", "form-control" } 
    } 
    ) 


<input class="form-control" type="text" name="@(Html.NameFor(m => Model))" value="@t.Value"> 

并且这是输出,你可以像@ Html.TextBox渲染名称和id属性两次。在第二个输入中工作正常。

<input name="dc.Name.dc.Name" class="form-control" id="dc_Name_dc_Name" type="text" value="Afghanistan" data-val-required="The Name field is required." data-val="true"> 
    <input name="dc.Name" class="form-control" type="text" value="Afghanistan"> 

有什么建议吗?谢谢 !

这里是一流的翻译和翻译

public class Translations<T> 
{ 
    public List<Translation<T>> Values { get; set; } 

    public Translations() 
    { 

    } 
} 


public class Translation<T> 
{ 
    public ObjectId Language { get; set; } 

    public T Value { get; set; } 

    public Translation() 
    { 

    } 

    public Translation(ObjectId language, T value) 
    { 
     Language = language; 
     Value = value; 
    } 

} 
+0

模板中的模型是什么? “EditorTemplate”的目的是什么?(你想做什么,不能简单地使用内置模板来完成) –

+0

该模型是一个用于翻译的结构数组。类似于翻译,其中包含一组具有语言和值的翻译。为了简单起见,我只想使用EditorFor(t => t.Name)...并修改模板编辑器,这将为固定语言获得正确的值=>为什么我们有类似t.Value:=) –

回答

0
<input class="form-control" type="text" name="@(Html.NameFor(m => Model))" 
    @Html.Raw(string.Join(" ", 
     validationAttributes. 
      Select(x => x.Key.ToString() + "=\"" + x.Value + "\""))) 
       value="@t.Value"> 

中级解决方案......但因为没有观众。我保持这种方式。 :=)

+0

有没有发现更好的? –