viewbag怎么切割
① mvc4 @Html.TextBoxFor 控件怎么取得后台ViewBag的数据
好像不能用textboxfor,这是用来显示model的,要用html.textbox(viewbag...)
② ViewBag和ViewData怎么 才能跨控制器传值
最近在开发项目中,使用的是ASP.NET MVC由于之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习!
一:使用
ViewData使用:
[csharp] view plain print?
public ActionResult Index()
{
List<string> colors = new List<string>();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
ViewData["listColors"] = colors;
ViewData["dateNow"]= DateTime.Now;
ViewData["name"] = "hejingyuan";
ViewData["age"]= 25;
return View();
}
View
[html] view plain print?
<p>
My name is <b>@ViewData["name"] </b>,<b>@ViewData["age"] </b>years old.
<br />
I like the following colors:
</p>
<ul id="colors">
@foreach (var color in ViewData["listColors"] as List<string>)
{
<li><font color="@color">@color </font></li>
}
</ul>
<p>
@ViewData["dateNow"]
</p>
ViewBag使用:
[csharp] view plain print?
public ActionResult Index()
{
List<string>colors = new List<string>();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
ViewBag.ListColors = colors; //colors is List
ViewBag.DateNow= DateTime.Now;
ViewBag.Name= "hejingyuan";
ViewBag.Age = 25;
return View();
}
View
[html] view plain print?
<p>
My name is <b>@ViewBag.Name</b>, <b>@ViewBag.Age</b> years old.
<br />
I like the following colors:
</p>
<ul id="colors">
@foreach (var color in ViewBag.ListColors)
{
<li><font color="@color">@color</font> </li>
}
</ul>
<p>
@ViewBag.DateNow
</p>
在使用上,我们可以很明显的看出这两种方式的区别,只是存取值得方式有些区别而已!
二,定义
ViewBag定义
[csharp] view plain print?
public dynamic ViewBag {
get {
if (_dynamicViewData == null) {
_dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
}
return _dynamicViewData;
}
}
ViewData定义
[csharp] view plain print?
public ViewDataDictionary ViewData {
get {
if (_viewData == null) {
SetViewData(new ViewDataDictionary());
}
return _viewData;
}
set {
SetViewData(value);
}
}
通过定义我们可以看出ViewBag 是ViewData的动态封装器,相当于在ViewData的基础上进行了封装处理。
三:对比
ViewData与ViewBag的区别
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["myName"]
2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData
注意:
1,只有当要访问的关键字是一个有效的C#标识符时,ViewBag 才起作用。
例如,如果在ViewData["Key With Spaces"]中存放一个值,那么就不能使用ViewBag访问。因为这样根本就无法通过编译。
2,动态值不能作为一个参数传递给扩展方法。因为C#编译器为了选择正确的扩展方法,在编译时必须知道每一个参数的真正类型。如果其中任何一个参数是动态的,那么就不会通过编译。
例如,这行代码就会编译失败:@Html.TextBox("name",ViewBag.Name)。要使这行代码通过编译有两种方法:第一是使用ViewData["Name"],第二是把ViewBag.Name值转换为一个具体的型:(string)ViewBag.Name 。
四:总结
对于传值方式这个话题,对于大家来说应该是有些老套,因为只要接触过项目的人都很了解,这是一个非常基础的知识,在这里列出来,主要的目的也不是说要告诉大家如何如何传值,如何如何操作,然后要求大家记下来等,而是要通过上面的知识,告诉大家其实知识并没有我们想的那么高深莫测,所有的知识即使我们没有听说过,但只要我们花一些时间去研究,去总结,那么一切困难都变得easy了!
③ mvc中前台遍历viewbag,循环的结果每一项用逗号隔开怎么实现
string s = "";
foreach (var item in ViewData.Keys)
{
s = ViewData[item].ToString() + ",";
}
s = s.Substring(0, s.LastIndexOf(','));
ViewBag实际上也是存在ViewData里面回的答
④ jquery 怎么调用viewbag
var [email protected]; 这样应该是可以的,不是报错是警告把,不用理会的。 或者你这样 var id='@ViewBag.id'; 加个引号就不会提示了。
⑤ mvc5怎么给所有action都设置几个公用的ViewBag-CSDN论坛
可以单独设计一个BaseController 继承 Controller
然后在BaseController中添加两个属性,接下来,在每次创建控制器的时候,都继承 BaseController ,然后可以设计一些参数,
这样的话 ,后期,需要改某个参数的话 ,直接修改BaseController 中的属性值就行了
⑥ mvc新建一个页面的话@{}是什么意思ViewBag.Title 这个没在controller里面设置,是怎么回事Layout 呢
@{}表示一个代码块
ViewBag.Title可以在controller里面设置啊,在controller里设置了就不用在view中再设置一边了内
Layout 表示当视容图渲染为非部分视图时,需要调用的模板页。
⑦ js脚本怎么调用@viewbag的值
js脚本调用@viewbag的值需要使用以下代码:
<script type="text/javascript">
//var [email protected] //这样直接写.id会影响下面那条var name语句,因为ViewBag.id后面不能带分号
//var name = "张三";
//所以将ViewBag传值到js中应该这么写!
var id = "@ViewBag.id"; //或者var id='@ViewBag.id'
var name="张三"
</script>
⑧ MVC怎么遍历Viewbag获得的list对象
遍历list,生成html,把list的对象属性写在html标签的data-*上,再用js操作
⑨ viewbag怎么在js里使用
var [email protected];
这样应该是可以的,不是报错是警告把,不用理会的。
或者你这样
var id='@ViewBag.id';
加个引号就不会提示了。
⑩ 怎么让int类型 转换成 viewbag能接收的类型
int是基础数据类型,不能直接转成string类型,但是可以通过以下方式转换:
与内String相加,例如 int i = 10; String s = ""+i;
调用String提供的api String.valueOf(i); 得到的容就是String类型。
使用int的包装类,Integer.toString()也可以。