asp.net中MVC常見問題小總結

來源:互聯網
上載者:User

在MVC中項目中使用JQuery,$.Post方法提交資料時產生中文亂碼現象?
      解決方案:

在$.post時進行資料編碼,使用escape方法
$.post("@Url.Action("AddFriendLink" , "Setup")" ,{"Name" :escape(name)},function(data){

 代碼如下 複製代碼

if(data>0){

                    alert( '添加成功!' );

                    window.location.reload();

                }

else{

                    alert( '添加失敗!' );

                }

            });

在後台進行解碼,使用Server.UrlDecode方法。

 代碼如下 複製代碼

public JsonResult Add(string Name)

{

     DemoClass demoClass= newDemoClass 

            {

                Name = Server.UrlDecode(Name)

            };

     int result = demoService.Add(demoClass);

     return Json(result);

}


--------------------------------------------------------------------------------
2. MVC中如何設定文字框的寬度?
    其實這個本不算是問題,不過剛開始還是寫錯了。

剛開始寫的是:

 代碼如下 複製代碼
@Html.TextBoxFor(model => model.Name, new { width="300px" })             (×)

發現沒有效果。

實施了第二方案,搞定了。

 代碼如下 複製代碼
@Html.TextBoxFor(model => model.Name, new { @style = "width:300px" })  (√)


--------------------------------------------------------------------------------
3.Html.RadioButtonFor怎麼使用呢?
   像下面這樣就可以了。當Model.IsStudent=true時會自動選中第一項,以此類推。

 代碼如下 複製代碼
@Html.RadioButtonFor(model=>model.IsStudent,true)是
@Html.RadioButtonFor(model => model.IsStudent, false)否


--------------------------------------------------------------------------------
4. @helper自訂方法

 代碼如下 複製代碼

@helper GetStatusName(int status)

    {

       //code block

    }

調用時直接使用@GetStatusName(2)即可。


--------------------------------------------------------------------------------

5.model多級引用時,對應的html?

 代碼如下 複製代碼
@ Html.TextBoxFor(model => model.Topic.Title)

對應產生的HMTL代碼為:

 代碼如下 複製代碼
<input name="Topic.Title" class="ConInpon" id="Topic_Title" Onkeyup="getLen(this)" type="text"/>

在寫指令碼的時候要注意了啊。


--------------------------------------------------------------------------------

6.DropDowlList控制項資料繫結的幾種常用方式?

①下拉框中的選項為幾個簡單的固定值。

 代碼如下 複製代碼
@Html.DropDownList("ProvinceId", new SelectListItem[]{
                      new SelectListItem{ Text="選擇類別",Value="0", Selected=true},
                      new SelectListItem{Text="類別A",Value="1"},
                      new SelectListItem{Text="類別B",Value="2"}
                      })

②將資料封裝為SelectList類型,並且放在ViewBag中進行傳遞。

controller層:

 代碼如下 複製代碼

IList< Person> personList =personService.GetList();

ViewBag.personId= new SelectList(personList , "Id", "Name", queryParam.EditorId);

View層:直接根據ID進行綁定就可以了。
@Html.DropDownList( "personId")

③如果頁面中的資料比較多,直接都放在viewbag中傳遞會比較亂,我們可以將頁面中需要的資料封裝成一個類,其中Select類型被封裝為一個屬性。

封裝類

 代碼如下 複製代碼

public class IndexView

{

   public SelectList PersonList{get;set;}

   …

}

controller: 對IndexView中的屬性賦初始值。
IList< Person> personList =personService.GetList();

IndexView indexView = new IndexView ()

            {

                     PersonList= new SelectList(personList , "Id", "Name", personList )

            };

            ViewBag.indexView = indexView;

View:
@ Html.DropDownListFor(x=>queryParam.PersonId,indexView.PersonList)


--------------------------------------------------------------------------------
7.非同步提交表單時,要記得Ajax.BeginForm喲!
   做表單提交時,繞的小彎子:

剛開始想用@Html.BeginForm()+MVC3驗證來實現,可是想非同步提示結果啊。
用Jquery中的.post方法提交,那就得把驗證加在用戶端指令碼了。
後來突然想起了老被我遺忘了的Ajax.BeginForm()方法。實現了我的需求。(*^__^*) 嘻嘻……

 代碼如下 複製代碼

@ using (Ajax.BeginForm( "Index", "Manage" , new AjaxOptions

{

    HttpMethod = "Post",

    OnSuccess = "Success",

    OnFailure = "Failure"

}))

    {

     @Html.ValidationSummary(true)

     @ Html.TextBoxFor(model => model.Name, new { @style = "width:300px" })

     @Html.ValidationMessageFor(model => model.Name)

    }

////指令碼提示執行結果

<script language="javascript" type ="text/javascript">

function Success() {

        alert( "修改成功" );

    }

function Failure() {

        alert( "修改失敗!" );

    }

</script>

其中還可以設定  UpdateTargetId屬性,執行結果後用來顯示執行結果。

重要的一點是要添加

 代碼如下 複製代碼
<script src=" @Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js" )" type="text/javascript"></script >

現在基本成功了。

 

疑問:

還有最後一個問題是產生了中文亂碼現象?用Html.BeginForm沒問題,用Ajax.BeginForm就會出現亂碼。(博問地址)
最後終於找到原因了:
view裡面和web.config裡的編碼有衝突了:

 

 代碼如下 複製代碼

 

      <script src=" @Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js" )" type="text/javascript"></script >

web.config:

    <globalization fileEncoding=" gb2312" requestEncoding =" gb2312" responseEncoding=" gb2312" culture =" zh-CN" />

還希望各位大牛能夠慷慨的提供一種比較好的解決方案,這裡是測試專案


在這裡我總結我所瞭解的mvc開發中的碰到的常見問題了,如果大家有更多資料可在下面評論提供。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.