老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Asp.netMVC中關于Razor問題如何解決-創新互聯

Asp.net MVC中關于Razor問題如何解決?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

成都創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、成都網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的神木網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

前言

最近在學習Asp.net MVC Razor,在使用中遇到了不少的問題,所以想著總結下來,沒有經驗的童鞋就是這樣磕磕碰碰出來的經驗。話不多說,來一起看看詳細的介紹:

一、Datatype的錯誤提示消息無法自定義

這也許是Asp.net MVC的一個Bug。ViewModel中定義了DataType為Date字段:

[Required(ErrorMessage = "Birthday must be input!")]

[DataType(DataType.Date, ErrorMessage = "Please enter a date like(2017-07-19).")]

public DateTime BirthDay { get; set; }

Razor生成的HTML如下:

Required的錯誤消息和定義的一樣,而DataType的消息卻沒有??既然DataType有自定義消息的公開屬性為啥不起作用?如果有知道的歡迎留言。

解決方法:

通過Javascript在頁面Load的時候替換掉原來的消息。

$("#txtDesignatedDate").attr('data-val-date', 'Please enter a date like(2017/1/1)');

二、d-MMM-yy格式的英文日期在IE中驗證出錯,而在Chrome中沒問題

Razor模型綁定設置如下:

@Html.LabelFor(m => m.BirthDay, new { @class = "col-md-2 control-label" }) 
@Html.TextBoxFor(m => m.BirthDay, "{0:d-MMM-yy}", new { @class = "form-control" })

Edge測試情況:顯示日期不對的錯誤消息。

Asp.net MVC中關于Razor問題如何解決

Chrome測試情況:居然沒有錯誤提示!!

Asp.net MVC中關于Razor問題如何解決

如果是英文以外同樣格式的日期,都會顯示日期不對錯誤消息。這到底怎么回事?

官網(http://jqueryvalidation.org/date-method/)其實也有說明:

Asp.net MVC中關于Razor問題如何解決

翻看JS代碼:

 // http://docs.jquery.com/Plugins/Validation/Methods/date

date: function( value, element ) {

 return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());

},

 

// http://docs.jquery.com/Plugins/Validation/Methods/dateISO

dateISO: function( value, element ) {

 return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);

},

dateISO也只支持yyyy-MM-dd 或者yyyy/MM/dd格式的驗證。沒辦法只能重寫一個驗證方法覆蓋原來的。

解決方法:

(function ($) {

 $.validator.methods.date = function (value, element) {

 return this.optional(element) || DateCheck(value);

 }

}(jQuery));

自定義一個DateCheck函數就可以了。

三、DropDownList設置默認選擇項偶爾會無效

Action端設置:

return View(new RegisterViewModel { BirthDay = DateTime.Now, BirthCity = City.Shanghai });

View端設置:

@Html.DropDownListFor(m => m.BirthCity, new SelectListItem[] {

 new SelectListItem{ Text="Jiangxi",Value="1"},

 new SelectListItem{ Text="Beijing",Value="2"},

 new SelectListItem{ Text="Shanghai",Value="3"},

 new SelectListItem{ Text="ShengZhen",Value="4"},

}, new { @class = "form-control" })

偶爾這樣的設置無法選擇Action中設置的選項,如果有知道原因的歡迎留言。

解決方法:用SelectList替代SelectItem列表。

@Html.DropDownListFor(m => m.BirthCity, new SelectList(new SelectListItem[] {

 new SelectListItem{ Text="Jiangxi",Value="1"},

 new SelectListItem{ Text="Beijing",Value="2"},

 new SelectListItem{ Text="Shanghai",Value="3"},

 new SelectListItem{ Text="ShengZhen",Value="4"},

}, "Value", "Text", Model.BirthCity), new { @class = "form-control" })

四、密碼輸入自動提示在Chrome中無法禁止

autocomplete = "off"在Chrome58以后都無效了。這個是瀏覽器的問題沒辦法了。

五、Disabled的控件值不上傳給服務器

解決方法:通過Javascript在submit之前將控件的Disabled屬性刪除,submit完成之后再復原Disabled屬性。

六、Html.HiddenFor()的控件值不更新

由于HiddenFor默認先使用ModelState的數據,所以在ModelState驗證失敗的情況下,重新加載畫面可能HiddenFor的控件數據是舊的。

解決方法:

ModelState.Clear();

七、List與Dictionary的數據Razor如何綁定

ViewModel屬性:

public List ListTest { get; set; }

public Dictionary> DicTest { get; set; }

View端綁定:

@for (int i = 0; i < Model.ListTest.Count; i++)

{

 @Html.TextBoxFor(m => m.ListTest[i].Name, new { @class = "form-control" })

 @Html.TextBoxFor(m => m.ListTest[i].Phone, new { @class = "form-control" })

}
@for (int i = 0; i < Model.DicTest.Count; i++)

{

 string key = Model.DicTest.Keys.ElementAt(i);

 < input type="hidden" name="DicTest[@i].Key" value="@key" />

 for (int j = 0; j < Model.DicTest[key].Count; j++)

 {

 @Html.TextBox($"DicTest[{i}].Value[{j}].Name", Model.DicTest[key][j].Name, new { @class = "form-control" })

 @Html.TextBox($"DicTest[{i}].Value[{j}].Phone", Model.DicTest[key][j].Phone, new { @class = "form-control" })

 }

}

生成的Html如下:



















  









其中控件的name很重要。

List: viewmodelpropertyname[index].modelpropertyname 格式。

Dictionary:key設置為viewmodelpropertyname[index].Key,Value設置為viewmodelpropertyname[index].Value

八、盡量多使用EditorFor

比如將第7點的DicTest使用EditorFor。首先需要在Shared或者Controller自身文件夾下創建EditorTemplates文件夾,然后在EditorTemplates文件夾中添加分部頁。代碼如下:

@using MVCDemo.Models;

 

@model List

 

@for (int i = 0; i < Model.Count; i++)

{

 @Html.TextBoxFor(m => m[i].Name, new { @class = "form-control" })

 @Html.TextBoxFor(m => m[i].Phone, new { @class = "form-control" })

}

調用頁面設置:

List的時候

@Html.EditorFor(m => m.ListTest, "_PartialPerson", $"ListTest")

Dictionary的時候

@for (int i = 0; i < Model.DicTest.Count; i++)

{

 string key = Model.DicTest.Keys.ElementAt(i);

 

 @Html.EditorFor(m => m.DicTest[key], "_PartialPerson", $"DicTest[{i}].Value")

}

生成的HTML:

感謝各位的閱讀!看完上述內容,你們對Asp.net MVC中關于Razor問題如何解決大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯成都網站設計公司行業資訊頻道。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


網站標題:Asp.netMVC中關于Razor問題如何解決-創新互聯
URL分享:http://www.xueling.net.cn/article/ddjdeo.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成人免费观看www的片 | 玩弄少妇人妻中文字幕 | 91少妇香蕉久久精 | 成人无码做爰www免费软件小说 | 欧美视频免费在线观看 | 夜夜嗨av一区二区三区中文字幕 | 777米奇色狠狠俺去啦 | 午夜亚洲国产理论片亚洲2020 | 国产V亚洲V天堂A无码 | 无码中文字幕AV免费放软件 | 国产精品久久久久久久娇妻 | www.久久久久久久久久久 | 亚洲欧美人成视频一区在线 | AV无码专区 | 国产高潮白浆喷水 | 丁香五月AV在线播放 | 狠狠躁夜夜躁人人爽天天69 | 14表妺好紧没带套在线播放 | 欧美男男激情videos高清 | 潮喷失禁大喷水无码 | 办公室高h文 | 视频一区二区三区四区五区 | 日本高清不卡α | 超碰97人人人人人蜜桃 | 黑人40厘米全部进去A片 | 国产真人无码作爱免 | 777米奇色888狠狠俺去啦 | 天堂Aⅴ无码一区二区三区 欧美天堂一区 | 激情影院网站 | 中文精品久久久久鬼色 | 三级小说欧洲区亚洲区 | 乱肉合集乱高h交换 | 亚洲综合激情五月丁香六月 | 国内a级一片免费av 麻豆日产六区 | 成年人网址在线观看 | 国产精品88久久久久久妇女厕 | 男女扒开双腿猛进入免费看污 | 国产黄色大片在线免费观看 | 欧美日本不卡视频 | 久久99久久99精品免视看动漫 | 久久久6|