2
A
回答
0
您正在實施表單嗎?你最好的選擇是在控制器上創建一個新的動作來接受你的對象。您的控制器將有一個這樣的方法:
public ActionResult MyAction(Person person)
{
// your code
}
或者,如果你希望它迴應的帖子:
[HttpPost]
public ActionResult MyAction(Person person)
{
// your code
}
那麼你的觀點會打電話通過鏈接或表單提交您的控制器動作。一個鏈接一個例子:基於公認的答案
@Html.ActionLink("MyContoller", "MyAction", newPerson);
3
通常你會收到一個模型作爲參數。您必須具有映射到模型屬性的表單字段。
public class PersonViewModel
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
...
}
在你看來
然後:
@model PersonViewModel
@using (Html.BeginForm())
{
<div class="editor-label">@Html.LabelFor(model => model.FirstName)</div>
<div class="editor-field">@Html.EditorFor(model => model.FirstName)</div>
<div class="editor-label">@Html.LabelFor(model => model.LastName)</div>
<div class="editor-field">@Html.EditorFor(model => model.LastName)</div>
...
}
然後在對應的視圖發送動作和接收
[HttpGet]
public ActionResult CreatePerson()
{
return View(new Person());
}
[HttpPost]
public ActionResult CreatePerson(PersonViewModel person)
{
var person = ...create and persist a Person entity based on the view model....
return Redirect("details", new { id = person.id });
}
1
你不應該想從傳遞一個對象模型的在調用控制器的操作之外查看您的控制器。如果您嘗試將參數傳遞給控制器操作,則可以添加路由值。
例如,這將通過作爲id參數值3到動作(使用路由邏輯)
@Html.ActionLink("Home", "Details", new { id = 3 });
0
我的印象是,你宣佈你的處理程序採取類型的FormCollection的參數。這可以通過變量的文本索引來檢索值。注意拼寫錯誤 - 嘗試檢索不存在的值只會返回空白。
0
,我的答案是不是你在找什麼,但基於Google(在寫作時),這就是回答最敏感實際將視圖中的數據傳遞給控制器。
如果您將值設置爲WebViewPage<T>.ViewContext.ViewData
,則可以從控制器訪問該值。我們正在使用這種技術在視圖中設置一個電子郵件主題,我們將其呈現爲HTML電子郵件的主體。 (這種方法允許我們把主題定義連同電子郵件的正文以及訪問從控制器,我們實際發送電子郵件這個問題。)
/// <summary>
/// Sends a system email containing a rendered view.
/// </summary>
public static void SendSystemEmailOfView(this Controller controller, string to, [AspMvcView] string viewName, object model, ViewDataDictionary viewData = null)
{
if (viewData == null)
{
viewData = new ViewDataDictionary();
}
var body = controller.Render(viewName, model, viewData);
object subject;
if (viewData.TryGetValue(WebViewPageExtensions.ViewDataKey_EmailSubject, out subject))
{
subject = subject as string;
}
if (subject == null)
{
subject = DefaultEmailSubject;
}
SendEmail(to, (string)subject, body, isHtml: true);
}
注:1)AspMvcViewAttribute
是ReSharper的如果您不使用Resharper,則可以省略註釋。 2)controller.Render
和SendEmail
是外部方法(有很多關於如何發送電子郵件的答案以及如何從控制器內手動呈現視圖到字符串。)
我們的觀點是這樣的:
@model MyViewModel
@{
this.EmailSubject("Subject Here");
}
<p>
Dear Web Forms,
</p>
<p>
I'm leaving you for MVC...it's just so much more...DRY.
</p>
和.EmailSubject
是這樣的:
public const string ViewDataKey_EmailSubject = "MyAppName_EmailSubject";
/// <summary>
/// Sets an email subject in <paramref name="page"/>'s <see cref="WebViewPage{T}.ViewBag"/>. Useful for retrieving the subject from controller.
/// </summary>
public static void EmailSubject<T>(this WebViewPage<T> page, string subject)
{
// Must set value on ViewContext's ViewData if we want to access it after view renders; page.ViewData setter copies the ViewDataDictionary.
page.ViewContext.ViewData[ViewDataKey_EmailSubject] = subject;
}
相關問題
- 1. 從視圖傳輸數據到控制器並返回查看
- 2. 將數據從視圖傳遞到控制器和控制器以查看
- 3. 從另一個視圖控制器的內存中查看/查看控制器
- 4. 傳遞數據查看到控制器
- 5. 從視圖控制器發送Firebase數據到視圖控制器
- 6. 將數據從視圖控制器傳遞到另一個視圖控制器
- 7. 從彈出視圖控制器獲取數據到父視圖控制器
- 8. 將數據從表格視圖控制器傳遞到視圖控制器
- 9. 從主視圖控制器發送Firebase數據到詳細視圖控制器
- 10. MVC3從控制器保存數據,查看回控制器
- 11. 將數據從控制器綁定到視圖 - >控制
- 12. 煎茶觸摸:如何傳遞數據從一個視圖控制器和控制器到下一頁查看
- 13. 我如何通過可視數據從控制器查看JavaScript
- 14. 從視圖到控制器
- 15. 從控制器到視圖
- 16. 查看::化妝不從控制器返回數據,查看
- 17. 查看控制器的視圖控制器和方向iOS
- 18. 將視圖控制器從根到視圖控制器(SplitView)
- 19. 試圖從控制器傳遞數據以查看laravel 5
- 20. 將數據從控制器傳遞到視圖並返回到控制器
- 21. 將數據從控制器傳遞到視圖並返回到控制器
- 22. 從控制器傳遞數據到scala/play框架中查看
- 23. 無法將數據從控制器返回到AJAX中查看
- 24. 從控制器到查看頁面的數據傳輸
- 25. 數據從查看到控制器綁定不起作用
- 26. 將數據從MVC控制器傳遞到在PHP中查看
- 27. 從控制器傳遞數據到asp.net中查看
- 28. 如何將數據從控制器傳遞到查看CI
- 29. 將數據發送到「查看」,從「控制器」
- 30. 後從查看文件到控制器
從以conttoller?您需要重新考慮當前的應用程序體系結構。 – zerkms 2011-05-13 03:42:10
傳入數據到您的控制器通常通過您的操作方法值,它來自路由值或發佈的數據。什麼阻止你使用它們? – anon 2011-05-13 03:43:40