我有一个标准的模型/表,只有几个字段有一个控制器和基本的脚手架视图相关(步骤)。这与applicationuser无关。我在中间也有一个关系表(userstep)。我正在尝试在步骤控制器中添加一个基于视图中的单击调用的方法,此方法应根据当前信息(当前用户,当前步骤)创建用户步骤记录。我希望这是有道理的,因为它让我发疯。这是我在stepcontroller中的方法。
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();
}
}
}
我现在得到的转换错误无法转换为int for stepid而且无法转换为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; }
}
UserStep
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; }
}
ApplicationUser
....other areas
public virtual ICollection<UserStep> UserSteps { get; set; }
我为要求提供一些细节而道歉,但这一方面似乎非常重要。
答案 0 :(得分:0)
您可以创建一个返回ActionResult
等的函数,而不是返回JsonResult
。或者更好的是,您可以创建和使用WebApi控制器(如果您选择,它可以为您构建一些CRUD函数至)。
然后,在客户端,您使用一些Ajax调用(使用jQuery或任何js框架)来访问您的服务器端方法并在您的html(DOM)中反映返回的(json)结果。有几个客户端(js)框架,如angular等,将帮助您实现此行为。