0

首先,我还是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();
}
4

2 回答 2

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
于 2013-07-16T15:01:40.330 回答
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 并且在路由数据中没有任何名称。

于 2013-07-16T15:15:44.590 回答