MVC3.0 不同view層,呼叫相同Controller方法,但引數不同

weixin_34391854發表於2011-06-30


在view 層中 跳轉詳細頁面我們瀏覽數 加1。,但修改頁面不需要加1,兩者都是呼叫controller 中從DB中檢索一條資料!

在詳細頁面 :

  "InfoContent", "Activity", new { id = x.NOTICE_ID,browseNum="add" }

在修改頁面:

// 修改
    function Modify(value)
    {
        location.href = '/Activity/InfoEdit?p_strNoticeID=' + value + '&browseNum=' +unadd;
    }

最終在Repository 中

ContractedBlock.gifExpandedBlockStart.gifRepository Code
1 public ACT_NOTICE GetSingleActNotice(Guid p_Notice_ID ,string browseNum)
2 {
3
4
5 ACT_NOTICE notice = Single(x => x.NOTICE_ID == p_Notice_ID);
6 if (browseNum == "add")
7 {
8 notice.BROWSE_NUM = notice.BROWSE_NUM + 1;
9 }
10
11 SubmitChanges();
12
13 return notice;
14 }


個人總結:傳參的思想,引申到通過傳遞不同引數控制顯示內容的不同,例如之前做的同一個view層,在一個也沒顯示圖片,另一個也沒沒有圖片,我們可以在viewmodel中定義一個欄位做標誌

     /// <summary>
        /// 控制頁面顯示圖片的引數
        /// </summary>
        public string showDiv { get; set; }

在controller中

ContractedBlock.gifExpandedBlockStart.gifController Code
1 /// <summary>
2 /// Index頁面載入 公告資訊list
3 /// </summary>
4 /// <returns></returns>
5   public ActionResult List(int flag)
6 {
7 NoticeViewModel viewModel=new NoticeViewModel();
8 viewModel=_noticeLogic.GetNotctForList();
9
10 //flag==1在index頁面公告資訊顯示圖片
11 if (flag == 1)
12 {
13 viewModel.showDiv = "show";
14 }
15
16 return PartialView("List", viewModel);
17
18 }

這樣就可以在 Index頁面 傳遞引數
    <div class="news">
        @Html.Action("List", "Notice", new { flag = "1" })
    </div>

  而在另一頁面所傳遞的引數不同。

最終在View層,在載入頁面時作出判斷,是否載入帶有圖片的div的顯示。

@if (Model.showDiv == "show")

{

        在index頁面顯示圖片(引數1)

}

else

{

在其他頁面不顯示圖片

}

還可以引申到viewBag 在controller 定義一個引數 傳遞在view層!

相關文章