2012-03-19 102 views
3

我有一個視圖,用戶將填充所有內容 - 但涉及父實體。我使用ViewBag將該Id傳遞給了我的視圖,但是我不知道如何將它返回到控制器中的發佈操作。我試圖隱藏表單域,但它不是在後顯示,否則我不知道如何抓住它... 控制器:MVC3 Razor - 如何將數據從控制器傳遞到控制器並返回控制器

public ActionResult AddCar(int id) 
{ 
ViewBag.Id = id; 
return View(); 
} 

視圖(嘗試):

@using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = carId })) 
    { 
View (tried): 
    @Html.Hidden(carId.ToString()) 

如何在我的控制器中檢索我的發佈操作中的值?還是有更好的/不同的方法來處理它? 感謝

回答

2

隱藏字段應該作品。問題是你的控制器不接受它。

您可以使用ViewModel來實現這一點。或者,在您的動作中使用以下代碼:

id = Request.Form["id"] 
+0

謝謝你的迴應。我使用了Robby Shaw的Request.Form。 – user1166147 2012-03-19 08:23:45

0

嘗試這樣的:

@using (Html.BeginForm("AddReturn", "DealerAdmin", new { id = ViewBag.Id })) 
{ 
    ... 
} 
+0

謝謝。您是否可以在我的控制器中檢索後操作中的值? – user1166147 2012-03-19 07:54:25

+0

你可以讓你的控制器動作帶有'Id'屬性的視圖模型。默認的模型聯編程序會自動填充這個屬性。 – 2012-03-19 07:56:06

9

爲後創建一個視圖模型,這將是如下

public class Post 
{ 
    int id {get;set;} 
    //other properties 
} 

,並在你的控制器動作發個帖子對象

public ActionResult AddCar(int id) 
{ 
Post post = new Post(); 
post.Id = id; 
return View(post); 
} 

您的觀點應該使用Post類作爲模型

@model namespace.Post 
@using (Html.BeginForm("AddReturn", "DealerAdmin", FormMethod.Post) 
    { 
     @Html.HiddenFor(model => model.Id) 
    } 

和你的控制器動作,其結果預計應該有一個帖子對象作爲輸入參數

public ActionResult AddReturn(Post post) 
{ 
//your code 
} 
+0

好的解決方案 謝謝 – Jones 2013-07-18 06:32:16

0

有一些方法
1.查詢字符串發送值,如果只有一個送價值控制器
2.如果你想從視圖中收集許多領域可以使用的FormCollection
樣品::

public actionresult method1() 
{ 
int id = //everything you want 
viewbag.id=id; 
.... 
//and other field to collect 
} 

鑑於

<form method="post" action="method1" enctype="now i dont remeber the value of this option" > 

@html.hidden("id") 
..... 

<input type="submit" value"Send"/> 
</form> 

[httpPost] 
public actionresult method1(fromcollection collection) 
{ 
int id = collection.get("id"); 
.... 
//and other field to collect 
} 
相關問題