如何在没有视图的情况下添加记录(调用方法)
本文关键字:加记录 添加 调用 方法 情况下 视图 | 更新日期: 2023-09-27 18:34:25
我有一个标准模型/表,只有几个字段,它有一个控制器和相关的基本脚手架视图(步骤(。 这与应用程序用户无关。 我在中间还有一个关系表(用户步骤(。 我正在尝试在步骤控制器中添加一个基于视图中单击调用的方法,此方法应根据当前信息(当前用户,当前步骤(创建用户步骤记录。 我希望这是有道理的,因为它让我发疯。 这是我在步进控制器中的方法。
public ActionResult Create(UserStep userStep)
{
if (ModelState.IsValid)
{
using (ApplicationDbContext db = new ApplicationDbContext())
{
UserStep userstep = new UserStep();
userstep.StepID = db.Steps.Find(id);
userstep.UserId = UserManager.FindById(User.Identity.GetUserId());
db.UserSteps.Add(userStep);
db.SaveChanges();
}
}
return View();
}
现在我意识到这可能是完全错误的,因为我基本上从用户步骤视图中获取了手动创建功能,该视图具有用户和步骤的下拉列表。
然后,我将像这样从步骤详细信息屏幕调用它。
<a href="@Url.Action("Create", "Step")" data-toggle="modal" data-target="#videoModal" data-thevideo="@Html.DisplayFor(model => model.URL)">
<div class="text-center">Play Now</div>
</a>
我想很明显我有点迷茫,但我想我有两个问题。
- 如果我不需要视图,而只需要要创建的记录,我的方法有什么问题?
- 如果方法是关于用户步骤的,如何获取当前步骤和当前用户?
更新
[HttpPost]
public JsonResult Create(UserStep userStep)
{
if (ModelState.IsValid)
{
using (ApplicationDbContext db = new ApplicationDbContext())
{
UserStep userstep = new UserStep();
userstep.StepID = db.Steps.Find(id);
userstep.UserId = UserManager.FindById(User.Identity.GetUserId());
db.UserSteps.Add(userStep);
db.SaveChanges();
}
}
}
我现在遇到转换错误,无法转换为 stepid 的 int 并且无法转换为 userid 的字符串,但是我不确定如何转换这些。
这是我的模型。
步
public class Step
{
[Display(Name = "Step #")]
public int StepID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Title { get; set; }
[StringLength(200, MinimumLength = 3)]
public string Description { get; set; }
public string URL { get; set; }
public virtual ICollection<UserStep> UserSteps { get; set; }
}
用户步骤
public class UserStep
{
[ForeignKey("User")]
public string UserId { get; set; }
public int UserStepID { get; set; }
public int StepID { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Step Step { get; set; }
}
应用程序用户
....other areas
public virtual ICollection<UserStep> UserSteps { get; set; }
我很抱歉要求很多细节,但这个领域似乎很重要。
不是返回 ActionResult
,而是可以创建一个返回 JsonResult
等的函数。甚至更好的是,您可以创建和使用 WebApi 控制器(如果您愿意,它会为您搭建一些 CRUD 函数(。
然后,在客户端,你使用一些Ajax调用(使用jQuery或任何js框架(来访问你的服务器端方法,并在你的html(DOM(中反映返回的(json(结果。有几个客户端(js(框架(如angular等(可以帮助您实现此行为。