8 c# asp.net-mvc entity-framework
我正在我的数据库中注册一个新客户端,当该操作完成时,我想显示该新客户端的详细视图.问题是我找不到发送到最近添加的客户端的Details
action方法的方法ID
.
我正在研究这段代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(ClientModel credential)
{
if(ModelState.IsValid)
{
database.Clients.Add(credential);
database.SaveChanges();
return RedirectToAction("Details", //Here is my problem, because sending credential.ID gives me an error as far as credential doesn't have an ID due it's not a database record.;
}
else
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
这是mi ClientModel
:
[Table("Clients")]
public class ClientModel
{
[Key]
public Int16 ID { get; set; }
[Required]
public String Name { get; set; }
public String Address { get; set; }
[EmailAddress]
public String EmailAddress { get; set; }
[Phone]
public String Phone { get; set; }
public virtual ICollection<UserModel> Users { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有人能为我的道路带来光明吗?
编辑:
得到了答案,我想讨论一下:
return RedirectToAction("Details", new { ID = credential.ID });
Run Code Online (Sandbox Code Playgroud)
这个解决方案有效,但现在问题可能是,这是更好的解决方案,还是应该使用@ Basic的答案中的2个类?
当您致电SaveChanges()
时credential.ID
,如果数据库中的自动编号和EF模型中的设置应该填充.您可以尝试重新加载Entity Framework 4.1 DbSet Reload中提到的元素.
在上面的场景中,您要添加一个新客户端,因此您需要将客户端模型转换为客户端,如:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Register(ClientModel credential)
{
var client = new Client
{
Name = model.Name,
EmailAddress = model.EmailAddress,
.
.
};
db.Clients.Add(client);
db.SaveChanges();
model.ID = client.ID;
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
然后ID将与模型一起返回.
归档时间: |
|
查看次数: |
18278 次 |
最近记录: |