簡體   English   中英

ASP.NET MVC剃刀。 如何不替換字段ID上的非美國字符?

[英]ASP.NET MVC Razor. How to do not replace non us characters on fields IDs?

如果我的POCO類確實具有這樣的屬性:

public int Número {get; set;}

他們把它寫在我的觀點上:

@Html.EditorFor(model => model.Número)

它使用下划線替換非標准us字符來呈現輸入,如下所示:

<input name="Número" id="N_mero" type="text" />

有可能以某種方式避免它嗎? 我想保留輸入id上的非標准字符,以便輕松地使用Javascript查詢。

您可以使用接受視圖數據對象的EditorFor 重載來覆蓋用於id屬性的值:

@Html.EditorFor(model => model.Número, new { htmlAttributes = new { id = nameof(Model.Número) } })

編輯:這不是一個全局配置解決方案,您只需要輕按一下開關即可使所有現有代碼正常工作,但是使用擴展方法,它將更容易進行:

public static MvcHtmlString EditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, bool overrideId = false)
{
    if (overrideId)
    {
        var propertyExpression = expression.Body as MemberExpression;
        if (propertyExpression != null)
        {
            return html.EditorFor(expression, new { htmlAttributes = new { id = propertyExpression.Member.Name } });
        }
    }

    return EditorExtensions.EditorFor(html, expression);
}

您甚至可以將overrideId參數默認設置為true,以使所有現有用法都能正常使用,前提是您已經在擴展類中使用了擴展類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM