mvc 3

kevin_0309 2011-07-14 09:14:20
我用mvc3写好了一个功能页面,怎么给做成用户控件?因为这个功能其他页面都要用。
说明:文件后缀的.cshtml的.不是aspx的。谢谢各位了,我很急的
...全文
365 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
Specialaspnet 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 kevin_0309 的回复:]

搞定了 谢谢大家
[/Quote]

我这个问题也不是很清楚能不能告诉我下 啊
kevin_0309 2011-07-23
  • 打赏
  • 举报
回复
搞定了 谢谢大家
macaihong_2011 2011-07-22
  • 打赏
  • 举报
回复
问题解决没
misssir 2011-07-14
  • 打赏
  • 举报
回复
编程太麻烦
misssir 2011-07-14
  • 打赏
  • 举报
回复
编程太麻烦编码
SK_Aqi 2011-07-14
  • 打赏
  • 举报
回复
无发言权,支持看..
Lisliefor 2011-07-14
  • 打赏
  • 举报
回复
这样做有一个不好的地方,就是每个使用Right.cshtml的页面中,相应的action都要对ViewData["meetingList"]做初始化动作。

如果你想摆脱这限制,就需要为Right.cshtml定义扩展方法,定义方法参考23楼。
Lisliefor 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 kevin_0309 的回复:]

引用 27 楼 lisliefor 的回复:

使用@RenderPage("~/view/Recruitment/Right.cshtml")的话,Right.cshtml的数据从哪里来?在action中初始化好了吗?


right.cshtml页面就是我上面的那个循环列表 初始化上面的都写好了
[/Quote]
在Shared中新建一个mvc3视图页(Razor),Right.cshtml,内容如下:

@{
// 从ViewData里面读取数据
List<VE.Recruitment.Data.Model.RecruitmentMeeting> list = ViewData["meetingList"] as List<VE.Recruitment.Data.Model.RecruitmentMeeting>;

}
@if (list != null && list.Count > 0)
{
@foreach (VE.Recruitment.Data.Model.RecruitmentMeeting meet in Model)
{
<ul class="side_lj">
<li>
<img src="@meet.RecruitmentMeetingImage" width="211" height="131"></li>
<li class="side_time">@meet.RecruitmentMeetingStartDate.ToString("yyyy-MM-dd")</li>
<li><strong>@meet.RecruitmentMeetingName</strong></li>
<li>招聘会粉丝:<span>@meet.FansNumber</span> 参与企业:<span>@meet.CorporationNumber / @meet.BoothNumber</span></li>
<li><a href="">
<img src="/Content/images/6_07.gif"></a></li>
</ul>
}
}



然后,在要使用的地方页面,通过@Html.RenderPartial("Right.cshtml"),调用用户控件,同时要保证跳转到Right.cshtml所属的页面视图的action里,要对ViewData["meetingList"]做初始化,否则视图内容为空。
threenewbee 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 kimizhou_blog 的回复:]
引用 26 楼 caozhy 的回复:
强行往 MVC 上面装乱七八糟的代码,到头来全部都是无用功。

那时候你就发现,再往上凑凑不出来了,推倒重来,前面的都白做了。想直接搞好结果直接完蛋了。

这样的人见了多了。经常在csdn出没,以前我也回答他们的问题。解决了,过两天问题又来了,奇奇怪怪的问题,越来越复杂,最后搞不下去了。我想为了点破分误导人家实在于心不忍。所以现在见一个劝一个。
……
[/Quote]
也许是吧。
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 caozhy 的回复:]
强行往 MVC 上面装乱七八糟的代码,到头来全部都是无用功。

那时候你就发现,再往上凑凑不出来了,推倒重来,前面的都白做了。想直接搞好结果直接完蛋了。

这样的人见了多了。经常在csdn出没,以前我也回答他们的问题。解决了,过两天问题又来了,奇奇怪怪的问题,越来越复杂,最后搞不下去了。我想为了点破分误导人家实在于心不忍。所以现在见一个劝一个。
[/Quote]
你说这些大家都不会明白的,只有亲身体验过,才会印象深刻,自己总结经验吸取教训,才会明白真理
kevin_0309 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 lisliefor 的回复:]

使用@RenderPage("~/view/Recruitment/Right.cshtml")的话,Right.cshtml的数据从哪里来?在action中初始化好了吗?
[/Quote]

right.cshtml页面就是我上面的那个循环列表 初始化上面的都写好了
threenewbee 2011-07-14
  • 打赏
  • 举报
回复
下次换工作记得来说下。
kevin_0309 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 caozhy 的回复:]

强行往 MVC 上面装乱七八糟的代码,到头来全部都是无用功。

那时候你就发现,再往上凑凑不出来了,推倒重来,前面的都白做了。想直接搞好结果直接完蛋了。

这样的人见了多了。经常在csdn出没,以前我也回答他们的问题。解决了,过两天问题又来了,奇奇怪怪的问题,越来越复杂,最后搞不下去了。我想为了点破分误导人家实在于心不忍。所以现在见一个劝一个。
[/Quote]


我说你别捣乱 行不行啊 你不说话能死啊 我三个月用一次csdn 没问题我跑这里我抽风啊
  • 打赏
  • 举报
回复
继续不走寻常路:ASP.NET MVC中使用Web Forms用户控件
http://www.cnblogs.com/dudu/archive/2011/03/19/asp_net_mvc_user_control.html
去看一下吧~
Lisliefor 2011-07-14
  • 打赏
  • 举报
回复
使用@RenderPage("~/view/Recruitment/Right.cshtml")的话,Right.cshtml的数据从哪里来?在action中初始化好了吗?
threenewbee 2011-07-14
  • 打赏
  • 举报
回复
强行往 MVC 上面装乱七八糟的代码,到头来全部都是无用功。

那时候你就发现,再往上凑凑不出来了,推倒重来,前面的都白做了。想直接搞好结果直接完蛋了。

这样的人见了多了。经常在csdn出没,以前我也回答他们的问题。解决了,过两天问题又来了,奇奇怪怪的问题,越来越复杂,最后搞不下去了。我想为了点破分误导人家实在于心不忍。所以现在见一个劝一个。
kevin_0309 2011-07-14
  • 打赏
  • 举报
回复
@{
Layout = null;
}
@model IList<VE.Recruitment.Data.Model.RecruitmentMeeting>


@foreach (VE.Recruitment.Data.Model.RecruitmentMeeting meet in Model)
{
<ul class="side_lj">
<li>
<img src="@meet.RecruitmentMeetingImage" width="211" height="131"></li>
<li class="side_time">@meet.RecruitmentMeetingStartDate.ToString("yyyy-MM-dd")</li>
<li><strong>@meet.RecruitmentMeetingName</strong></li>
<li>招聘会粉丝:<span>@meet.FansNumber</span> 参与企业:<span>@meet.CorporationNumber / @meet.BoothNumber</span></li>
<li><a href="">
<img src="/Content/images/6_07.gif"></a></li>
</ul>
} 这是我右边的要提取出来的公共部分

<div class="side_cont">
@RenderPage("~/view/Recruitment/Right.cshtml")
<div> 要放到这个里面 谢谢大家啊
阿非 2011-07-14
  • 打赏
  • 举报
回复
asp.net mvc3 中也有用户控件的,不知道你的疑惑在哪里?
Lisliefor 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kevin_0309 的回复:]

不是的 我现在就是在用mvc框架做的一个小型项目 要用到的一个列表是公共部分 我想提取出来写个公用的控件 可是传值的时候不知道怎么搞了 @RenderPage("~/view/Recruitment/Right.cshtml") 值怎么传进去
[/Quote]

这种可能就要定义扩展方法了:
在Controllers文件夹下,找到HtmlHelper文件夹,新建.cs文件,这是一个区域三级联动控件的扩展方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ATA.OLSD.OrgMng.Entity;
using ATA.OLSD.OrgMng.BLL;

namespace System.Web.Mvc.Html
{
/// <summary>
/// 区域三级联动下拉框,扩展方法。
/// </summary>
public static class RegionSelectBar
{
/// <summary>
/// 编辑时使用,传入当前需要选中的regionid
/// </summary>
/// <param name="html"></param>
/// <param name="regionId"></param>
/// <returns></returns>
public static MvcHtmlString RenderRegionBar(this HtmlHelper html, int regionId,int level)
{
html.ViewData["level"] = level;

html.ViewData["fregionid"] = regionId;

List<RegionInfoEn> region_f = new List<RegionInfoEn>() { new RegionInfoEn { RegionName = "--请选择--", RegionID = -1 } };
List<RegionInfoEn> region_s = new List<RegionInfoEn>() { new RegionInfoEn { RegionName = "--请选择--", RegionID = -1 } };
List<RegionInfoEn> region_t = new List<RegionInfoEn>() { new RegionInfoEn { RegionName = "--请选择--", RegionID = -1 } };

SelectList region_dlf = new SelectList(region_f, "RegionId", "RegionName", regionId);
SelectList region_dls = new SelectList(region_s, "RegionId", "RegionName", regionId);
SelectList region_dlt = new SelectList(region_t, "RegionId", "RegionName", regionId);

html.ViewData["region_dlf"] = region_dlf;
html.ViewData["region_dls"] = region_dls;
html.ViewData["region_dlt"] = region_dlt;

RegionInfoBLL bll = new RegionInfoBLL((html.ViewData["LogonModel"] as ATA.OLSD.OrgMng.MvcWebSite.Controllers.LogonModel).ProjectKey);

if (regionId == -1)
{
List<RegionInfoEn> lst = bll.GetModelList("len(fIndexCode)=4");
region_f.AddRange(lst);
return html.Partial("RegionSelectBar");
}


RegionInfoEn selectedRegion = bll.GetRegionInfo(regionId);

if (selectedRegion == null)
return html.Partial("RegionSelectBar");



switch (selectedRegion.Type)
{
case 1:
{

List<RegionInfoEn> lst = bll.GetCurrentDropdownList(regionId);
region_f.AddRange(lst);
lst = bll.GetNextDropdownList(regionId);
region_s.AddRange(lst);

}
break;
case 2:
{


List<RegionInfoEn> lst = bll.GetLastDropdownList(regionId);
region_f.AddRange(lst);
lst = bll.GetCurrentDropdownList(regionId);
region_s.AddRange(lst);
lst = bll.GetNextDropdownList(regionId);
region_t.AddRange(lst);

region_dlf = new SelectList(region_f, "RegionId", "RegionName", selectedRegion.ParentID.Value);
}
break;
case 3:
{

List<RegionInfoEn> lst = bll.GetCurrentDropdownList(regionId);
region_t.AddRange(lst);
lst = bll.GetLastDropdownList(regionId);
region_s.AddRange(lst);
lst = bll.GetLastDropdownList(selectedRegion.ParentID.Value);
region_f.AddRange(lst);

region_dls = new SelectList(region_s, "RegionId", "RegionName", selectedRegion.ParentID.Value);
RegionInfoEn parent = bll.GetRegionInfo(selectedRegion.ParentID.Value);
region_dlf = new SelectList(region_f, "RegionId", "RegionName", parent.ParentID.Value);
}
break;

}

html.ViewData["region_dlf"] = region_dlf;
html.ViewData["region_dls"] = region_dls;
html.ViewData["region_dlt"] = region_dlt;
return html.Partial("RegionSelectBar");
}

/// <summary>
/// 新建时使用,无参数,默认初始化省级区域。
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static MvcHtmlString RenderRegionBar(this HtmlHelper html)
{
return RenderRegionBar(html,-1,3);
}


/// <summary>
/// 新建时使用,无参数,默认初始化省级区域。
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static MvcHtmlString RenderRegionBar(this HtmlHelper html,int region)
{
return RenderRegionBar(html, region, 3);
}


}
}


Shared文件夹下用户控件的定义:

<script src="@Url.Content("~/Content/js/RegionSelectBar.js")" type="text/javascript"></script>
<script type="text/javascript">
$(function () {

RegionBarInit("@Url.Action("GetSubRegion","Region")");
var region_level=@ViewData["level"];
$("#region_dlt").parent().children("select:lt("+region_level+")").show();

})
</script>

@Html.DropDownList("region_dlf", null, new { style = "margin:0px 5px 0px 0px;width:150px;display:none;" })
@Html.DropDownList("region_dls", null, new { style = "margin:0px 5px 0px 0px;width:150px;display:none" })
@Html.DropDownList("region_dlt", null, new { style = "margin:0px 5px 0px 0px;width:150px;display:none" })
@Html.Hidden("fRegionId")


页面调用用户控件的方法:
@Html.RenderRegionBar(Model == null ? -1 : (Model as ATA.OLSD.OrgMng.Entity.OrganizationEn).fRegionID.Value, 3)
kevin_0309 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kevin_0309 的回复:]

不是的 我现在就是在用mvc框架做的一个小型项目 要用到的一个列表是公共部分 我想提取出来写个公用的控件 可是传值的时候不知道怎么搞了 @RenderPage("~/view/Recruitment/Right.cshtml") 值怎么传进去
[/Quote]

你扯这么多 有什么用啊 你不会了 闪人
加载更多回复(21)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧