#c# #asp.net #asp.net-mvc #web
#c# #asp.net #asp.net-mvc #веб
Вопрос:
Я новичок в MVC Asp.Net Я работаю над простым веб-приложением, но пытаюсь закодировать его динамически, используя модальности (для создания новой записи), но проблема в том, что когда я вызываю частичное представление, код не сохраняет информацию.
Это HTML-код модального.
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">amp;times;</span>
</button>
</div>
<div class="modal-body">
@Html.Partial("View", new MyWebAppInMVC.Models.Question())
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
Вот частичная страница:
@model MyWebAppInMVC.Models.Question
@using (Html.BeginForm("Index", "Questions", FormMethod.Post, new { id = "AddModal" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Question</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.DateOfQuestion, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DateOfQuestion, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DateOfQuestion, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Type, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Type, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Type, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" id="BtnSubmit" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")}
Здесь контроллер
// GET: Questions/Create
public ActionResult Create()
{
return View();
}
// POST: Questions/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,Title,Description,DateOfQuestion,Type")] Question question)
{
if (ModelState.IsValid)
{
db.Questions.Add(question);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(question);
}
На самом деле это очень просто, однако частичное представление ничего не сохраняет.
Что не так с моим кодом?
Заранее спасибо.
Комментарии:
1. Не могли бы вы добавить код вашего контроллера в сообщение, пожалуйста?
2. Конечно, вот так.
3. если вы устанавливаете точку останова в своем
Create
действии post, попадает ли оно когда-нибудь? Я предполагаю, что не потому, что ваша форма публикуется вQuestions
действии.. или, может быть, вы просто не опубликовали соответствующий код, это довольно сложно определить. Из того, что вы опубликовали, похоже, что ваша форма, использующая оператор, должна быть@using (Html.BeginForm("Create", "Questions", FormMethod.Post, new { id = "AddModal" }))
Ответ №1:
Где в вашем коде вы вызываете действие Create вашего контроллера? Я думаю, вам следует использовать:
@using (Html.BeginForm("Create", "Questions", FormMethod.Post, new { id = "AddModal" }))
Комментарии:
1. Супер здорово! Большое спасибо!