MVC3.0 不同view层,调用相同Controller方法,但参数不同


在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 中

Repository 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中

Controller 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层!

posted @ 2011-06-30 13:14  365lei  阅读(2925)  评论(0编辑  收藏  举报