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. 从视图控制器发送Firebase数据到视图控制器
- 4. 将数据从视图控制器传递到另一个视图控制器
- 5. 将数据从表格视图控制器传递到视图控制器
- 6. 从主视图控制器发送Firebase数据到详细视图控制器
- 7. 我如何通过可视数据从控制器查看JavaScript
- 8. 从控制器到视图
- 9. 将视图控制器从根到视图控制器(SplitView)
- 10. 试图从控制器传递数据以查看laravel 5
- 11. 将数据从控制器传递到视图并返回到控制器
- 12. 将数据发送到“查看”,从“控制器”
- 13. 将数据从MVC控制器传递到在PHP中查看
- 14. 如何将数据从控制器传递到查看CI
- 15. 从控制器传递数据到scala/play框架中查看
- 16. 无法将数据从控制器返回到AJAX中查看
- 17. 从数据传递到控制器从视图与C#/ Razor MVC
- 18. 传回HttpPostedFileBase从视图→控制器→返回查看
- 19. Grails通过数据查看控制器
- 20. 笨传递数据控制器查看
- 21. 如何从控制器传递参数来查看,查看控制器?
- 22. Swift 3从主控制器到Firebase和Segue的视图控制器的数据
- 23. 无法添加SSSnackbar查看绑定到视图控制器
- 24. 将从Cloudkit提取的数据从一个视图控制器传递到另一个视图控制器
- 25. mvc-从控制器查看查询数据
- 26. Swift:直接从摄像头看到视图控制器/ UIImagePickerController
- 27. 从当前视图控制器的子视图控制器导航到详细信息视图控制器
- 28. 在cakephp中将数据从视图传递到控制器
- 29. 从控制器调用数据到HTML视图AngularJS
- 30. 从视图传递数据到控制器动作
从以conttoller?您需要重新考虑当前的应用程序体系结构。 – zerkms 2011-05-13 03:42:10
传入数据到您的控制器通常通过您的操作方法值,它来自路由值或发布的数据。什么阻止你使用它们? – anon 2011-05-13 03:43:40