asp.net – ASP MVC外键提交问题
发布时间:2020-12-16 09:31:03 所属栏目:asp.Net 来源:网络整理
导读:我在后端有两个表用户和费用. UserId是Expenses表的foreignKey.我需要将UserId从Usercontroller传递给ExpenseController,以便根据用户ID保存费用信息.但是有两个问题. 我无法使用传递给费用控制器的id参数 另一个是创建费用表单,我找不到任何userId字段 我要
我在后端有两个表用户和费用. UserId是Expenses表的foreignKey.我需要将UserId从Usercontroller传递给ExpenseController,以便根据用户ID保存费用信息.但是有两个问题.
>我无法使用传递给费用控制器的id参数 请查看以下代码.希望您能够帮助我. // UserController的 public ActionResult Index() { return View(db.Users.ToList()); } // Inedx View(用户) <%= Html.ActionLink("Expenses","Index","Expense",new { id=item.Id},null)%> // ExpenseController public ActionResult Index(int id) { ViewData["id"] = id; return View(db.Expenses.Where(x => x.Users.Id == id).ToList()); } //索引视图(费用) <%= Html.ActionLink("Create New","Create",new { id=ViewData["id"]})%> //费用控制器(创建) public ActionResult Create(int id) { //ViewData["id"] = id; return View(); } //创建视图 <% using (Html.BeginForm()) {%> <fieldset> <legend>Fields</legend> <p> <label for="ExpenseTitle">ExpenseTitle:</label> <%= Html.TextBox("ExpenseTitle") %> <%= Html.ValidationMessage("ExpenseTitle","*") %> </p> <p> <label for="ExpenseDescription">ExpenseDescription:</label> <%= Html.TextBox("ExpenseDescription") %> <%= Html.ValidationMessage("ExpenseDescription","*") %> </p> <p> <label for="Date">Date:</label> <%= Html.TextBox("Date") %> <%= Html.ValidationMessage("Date","*") %> </p> <p> <label for="Expense">Expense:</label> <%= Html.TextBox("Expense") %> <%= Html.ValidationMessage("Expense","*") %> </p> <p> <input type="submit" value="Create" /> </p> </fieldset> <% } %> //创建帖子 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(FormCollection collection) { var expense = new Expenses(); try { TryUpdateModel(expense,new string[] {"UserId","ExpenseTitle","ExpenseDescription","Date","Expense" },collection.ToValueProvider()); if (ModelState.IsValid) { db.AddToExpenses(expense); db.SaveChanges(); return RedirectToAction("Index",int.Parse(collection["UserId"])); } else { return View(expense); } } catch { return View(expense); } } 解决方法
我认为,达成共识的正确方法是为每个视图构建特定模型,并使用视图所需的数据填充该模型,包括视图调用的任何操作可能需要的数据.因此,例如,您有一个您的创建视图将采用的费用模型,其中包含的内容之一将是费用的关联用户ID.处理帖子的Create操作将采用费用模型而不是FormCollection作为其参数.在“创建视图”中,您可以将模型中的用户ID存储在隐藏字段中,以便将其值传播回帖子.
[AcceptVerbs( HttpVerbs.Get )] public ActionResult Create(int id) { return View( new ExpenseModel { UserId = id } ); } [AcceptVerbs( HttpVerbs.Post )] public ActionResult Create( ExpenseModel expense ) { ... } 视图 ... Inherits="System.Mvc.ViewPage<ExpenseModel>" %> <% using (Html.BeginForm()) { %> <%= Html.Hidden( "UserId" ) %> ... <% } %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET调试与IIS超时
- 在ASP.NET中使用C#将字符串转换为日期让我得到一个小时的约
- asp.net-mvc – 控制器或模型中的存储库?
- asp.net – 使用MySql和MVC 3上的成员资格向注册表单添加更
- asp.net-mvc-4 – MVC4如何设置cookie然后重定向到一个动作
- asp.net-mvc-3 – 使用带有布尔值的Html.RadioButtonFor不写
- asp.net – 谷歌Chrome在崩溃后恢复会话cookie,如何避免?
- asp.net – 如何确定字符串的第一个字符是否是VB.NET中的数
- ASP.NET中的会话修复
- asp.net – 来自asp app的流媒体mime类型’application / p
推荐文章
站长推荐
- ASP.NET使用百度eCharts
- asp.net-mvc – DAL – > BLL < - GUI组合根.如何
- ASP.NET MVC 3 HtmlHelper异常不能识别继承的接口
- ASP.NET Core中的缓存[1]:如何在一个ASP.NET Co
- asp.net-mvc – 无法通过kendo上传从一个视图到另
- asp.net-mvc – 如何将401认证错误返回给RestSha
- asp.net – 如何从mvc .net web app中的jquery(在
- asp.net-mvc – 在ServiceStack服务上进行身份验
- asp.net-mvc – 如何在每个页面的第一次打击时提
- asp.net – 如何判断请求是否来自代理?
热点阅读