我所有的文本框都返回null我该怎么办



尽管我在文本框中键入了一些内容,但页面上的元素返回null时,我遇到了问题。是什么原因造成的?我想为最后一年制作一个简单的CRUD应用程序和一个仪表板。

这是我的观点:

@model WebApplication1.Models.Category
@{
ViewBag.Title = "Create Category";
}
<h2>@ViewBag.Title</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class 
="control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Name, new { htmlAttributes = 
new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { 
@class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
} 
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

这是我的控制器操作:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Name")] Category category)
{
if (ModelState.IsValid)
{
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}

我认为您需要发布到正确的ActionName。您使用@using (Html.BeginForm()),它将发布到控制器的索引中。但你有Create。所以把表格指向那个。

@using (Html.BeginForm("Create", "Home", FormMethod.Post))

首先确保您有正确的视图模型属性设置:

public class Category
{
public int ID { get; set; }
public string Name { get; set; }
}

然后指向操作名称和控制器名称,它们在BeginForm帮助程序中处理POST操作

@* assumed the controller name is 'CategoryController' *@
@using (Html.BeginForm("Create", "Category", FormMethod.Post))
{
// form contents
}

最后更改参数名称以避免默认模型绑定器中的命名冲突,还删除BindAttribute,因为POST操作具有强类型的viewmodel类作为参数:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Category model)
{
if (ModelState.IsValid)
{
db.Categories.Add(model);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}

相关问题:

POST操作传递空ViewModel

相关内容

  • 没有找到相关文章

最新更新