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 – 如何判断请求是否来自代理?
热点阅读
