首先,我还是MVC的初学者
显然有人知道我们可以传递/ CONTROLLER / METHOD / ID,但在某些情况下,比如我需要将3-4个参数传递给控制器,我该怎么办?是否有一种传递它们的好方法?
下面的代码是一个处理post请求的控制器,为什么我不能使用“temp1”?它说应该在使用前宣布一个,这意味着什么?
[HttpPost]
public ActionResult Payment_Home(Wires_SWIFT temp1){
string str = temp1.BENEFICIARY_NAME;
DbQuery<Wires_SWIFT> dbq = db.Wires_SWIFT.Where(d => d.BENEFICIARY_NAME LIKE temp1.);
return View();
}
答案 0 :(得分:2)
使用ViewModel
。
这是一个包含您需要的所有值的类 - 您可以在控制器操作中填充它并将其传递给视图(如果视图强烈键入模型,则会有所帮助。
public class MyModel
{
public string SomeValue { get; set; }
public string SomeOtherValue { get; set; }
}
// controller
var myModel = new MyModel...
return View(myModel);
// view
@model MyModel
@Model.SomeValue
答案 1 :(得分:0)
您需要确保正确设置路线。
所以要匹配dothis/action/param1/param2
,你需要一条路线,如:
routes.MapRoute(
"MyRoute", // Route name
"{controller}/{action}/{param1}/{param2}", // URL with parameters
new { controller = "Surveys", action = "Index", param1 = "param1", param2 = "param2" } // Parameter defaults
);
对于实际工作的上述路线,您需要一个控制器和操作,例如
public class DoThisController : Controller
....
public ActionResult Action(int param1, int param2)
....
操作参数的类型无关紧要,但名称应与规则中定义的名称相匹配,以允许ASP.Net定位操作
在您的情况下,错误是因为您的参数被称为temp1&amp;在路线数据中没有任何东西叫做。