jpo*_*jpo 33 forms asp.net-mvc controller
我有一个mvc表单(由模型制作),当提交时,我想得到一个参数我有代码来设置表单并获取参数
using (@Html.BeginForm("myMethod", "Home", FormMethod.Get, new { id = @item.JobId })){
}
Run Code Online (Sandbox Code Playgroud)
在我家里的控制器里面
[HttpPost]
public FileStreamResult myMethod(string id)
{
sting str = id;
}
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到错误
您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.
当我省略了[HttpPost]
,代码执行文件,但变量str
和id
为空.我该如何解决这个问题?
编辑
这可能是因为控制器中的myMethod不是ActionResult吗?我意识到当我有一个类型为Actionresult的方法时,该方法绑定到一个视图,一切都运行良好.但FileStreamresult类型无法绑定到View.如何将数据传递给此类方法?
For*_*Two 50
如有疑问,请遵循MVC惯例.
如果尚未包含JobID属性,请创建viewModel
public class Model
{
public string JobId {get; set;}
public IEnumerable<MyCurrentModel> myCurrentModel { get; set; }
//...any other properties you may need
}
Run Code Online (Sandbox Code Playgroud)
强烈输入你的观点
@model Fully.Qualified.Path.To.Model
Run Code Online (Sandbox Code Playgroud)
为表单添加JobId的隐藏字段
using (@Html.BeginForm("myMethod", "Home", FormMethod.Post))
{
//...
@Html.HiddenFor(m => m.JobId)
}
Run Code Online (Sandbox Code Playgroud)
并接受模型作为控制器操作中的参数:
[HttpPost]
public FileStreamResult myMethod(Model model)
{
sting str = model.JobId;
}
Run Code Online (Sandbox Code Playgroud)
Cof*_*ode 14
这是因为您已将表单方法指定为GET
将视图中的代码更改为:
using (@Html.BeginForm("myMethod", "Home", FormMethod.Post, new { id = @item.JobId })){
}
Run Code Online (Sandbox Code Playgroud)