【发布时间】:2020-03-06 11:32:52
【问题描述】:
不明白我在这里监督什么... 我有一个在视图中渲染的模型。
这是 SubscriptionViewModel:
public Subscription Subscription { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public List<DateTime> SomeDates { get; set; }
在视图中,我使用来自 SubscriptionViewModel 的数据填充了一个表。 在每个表格行中都有一个 If/else 语句,在每个部分中我放置了一个 Form,以便可以将数据回传到 SubscriptionController,这是一个伪示例:
if (condition)
{
using (Html.BeginForm("Subscribe", "Subscription", FormMethod.Post))
{
@Html.ActionLink("text", "Subscribe", new { @date = item }, new { @class = "btn btn-warning btn-radius" })
}
}
else
{
using (Html.BeginForm("UnSubscribe", "Subscription", FormMethod.Post))
{
@Html.ActionLink("text", "UnSubscribe", new { @date = item }, new { @class = "btn btn-danger btn-radius" })
}
}
这是被触发的 SubscriptionContoller 方法:
[AllowAnonymous]
public ActionResult Subscribe(SubscriptionViewModel model, string date)
{
return View();
}
POST 被触发,我的 Model 不是 NULL,date 参数也有正确的值,唯一丢失的是来自 Subscription 实体的参数我的订阅视图模型。它们不是 NULL,但它们只是在最初进入 View 时没有它们的初始值......
不知道我在监督什么,我尝试在视图中使用TempData.Keep()(我以前从来不需要这样做),但这也不起作用。
欢迎提出任何建议! 谢谢!
【问题讨论】:
-
您的数据检索是什么样的?
-
表单中只有超链接时如何触发帖子?
-
@JasonRoner,你的意思是我在渲染模型之前如何填充它?
-
@DaveBarnett,@Html.ActionLink("text", "Unsubscribe", ...) 指向应该发布的 Action。我在网上的一个例子中看到了这一点。
-
这将为您提供一个超链接,这意味着该表单将不会发布。您将通过 get 请求进入 subscribe 方法,该请求可以工作,但不是正确的方法。
标签: c# asp.net-mvc post model-view-controller model