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()也可以。