我对ASP完全陌生.我相信这是一个非常基本的问题
到目前为止,我已经能够使用从控制器传递到视图的模型将数据从服务器传递到视图,但我不确定如何将数据从视图传递到控制器.
在这种情况下,我只需要将一个字符串从视图传递到控制器.
任何有榜样的建议都将不胜感激.
UPDATE
我知道我必须将数据发回服务器,但这是如何以razorhtml代码和控制器的形式实现的?
我对ASP完全陌生.我相信这是一个非常基本的问题
到目前为止,我已经能够使用从控制器传递到视图的模型将数据从服务器传递到视图,但我不确定如何将数据从视图传递到控制器.
在这种情况下,我只需要将一个字符串从视图传递到控制器.
任何有榜样的建议都将不胜感激.
UPDATE
我知道我必须将数据发回服务器,但这是如何以razorhtml代码和控制器的形式实现的?
您可以使用ViewModels来实现这一点,比如如何将数据从控制器传递到视图.
假设您有一个如下所示的视图模型
public class ReportViewModel
{
public string Name { set;get;}
}
在你的行动中,
public ActionResult Report()
{
return View(new ReportViewModel());
}
您的视图必须强类型为ReportViewModel
@model ReportViewModel
@using(Html.BeginForm())
{
Report NAme : @Html.TextBoxFor(s=>s.Name)
<input type="submit" value="Generate report" />
}
在控制器中的HttpPost个动作方法中
[HttpPost]
public ActionResult Report(ReportViewModel model)
{
//check for model.Name property value now
//to do : Return something
}
OR简单地说,您可以在没有POCO类(ViewModels)的情况下做到这一点
@using(Html.BeginForm())
{
<input type="text" name="reportName" />
<input type="submit" />
}
在HttpPost操作中,使用与文本框名称同名的参数.
[HttpPost]
public ActionResult Report(string reportName)
{
//check for reportName parameter value now
//to do : Return something
}
EDIT : As per the comment
如果你想发布到另一个控制器,你可以使用BeginForm方法的this overload.
@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
<input type="text" name="reportName" />
<input type="submit" />
}
可以使用相同的视图模型,只需在GET action方法中设置属性值
public ActionResult Report()
{
var vm = new ReportViewModel();
vm.Name="SuperManReport";
return View(vm);
}
在你看来
@model ReportViewModel
<h2>@Model.Name</h2>
<p>Can have input field with value set in action method</p>
@using(Html.BeginForm())
{
@Html.TextBoxFor(s=>s.Name)
<input type="submit" />
}