首页 > 解决方案 > MVC 将值/参数从控制器传递到视图

问题描述

我想要实现的目标:
1. 填写表格
2. 保存到数据库
中 3. 将用户重定向到另一个显示一些详细信息的视图(referenceID)

所以这就是我所拥有的

控制器:

[HttpPost]
[ValidateAntiForgeryToken]

public ActionResult Create(ClearanceViewModel myViewModel, TClearance clearance, TRefsNum referenceNo)
{
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  var stringChars = new char[8];
  var random = new Random();
  for (int i = 0; i < stringChars.Length; i++)
  {
      stringChars[i] = chars[random.Next(chars.Length)];
  }
  var finalString = new String(stringChars);
  string refNo = DateTime.Now.Year + finalString;
  items.RefNum = refNo;


  db.TClearances.Add(items);
  db.SaveChanges();

  return RedirectToAction(items.RefNum, "displayRef");
}

上面的代码确实将用户输入的任何内容保存到数据库,然后重定向到视图“displayRef”,并且 items.refNum 是我试图传递给视图的值

看法:

@model RDMSPNPOnlineClearance.Models.TClearance

@{
    var getRef = Model.RefNum;
}

this is your ref number: @Html.LabelFor(model => model.RefNum, htmlAttributes: new { @class = "control-label" })

上面的代码试图获取预期值“items.refNum”并使用该值将其显示给用户。

所以实际发生的是,用户填写,保存到数据库,然后重定向到“displayRef”视图。保存部分没有问题。问题是我没有在 displayRef 视图中获得 refNum。url 更改为:Localhost:55433/items.refNum/view

那么,我如何将该值传递给用户?

标签: c#model-view-controllerparameters

解决方案


你需要RedirectToAction吗?你能不能只返回视图...

return View("displayRef", items.RefNum);

如果您必须使用RedirectToAction,这意味着您正在重定向到控制器操作,并且您必须像这样指定它......

return RedirectToAction("Action","controller", new {@id=id});

此外,您在视图中的模型不正确,您正在绑定一个stringrefNo,但在您的视图顶部声明您要绑定一个类RDMSPNPOnlineClearance.Models.TClearance


推荐阅读