Я создал простое приложение MVC. Он имеет вид Index в папке home, в представлении у меня есть некоторые поля ввода, какие входы я хочу сохранить как объект и сохранить в базе данных. Я создал представление с контроллера, который я создал. Моя проблема, когда я нажимаю кнопку для отправки ничего, похоже, не происходит?
Вот код, который я имею в представлении.Вход от приложения mvc не отправляется в базу данных
@model FlexMVC.FlexBookingDb.Resevation
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Resevation</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.ResevationDate, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ResevationDate, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ResevationDate, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.ResevationTime, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.ResevationTime, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ResevationTime, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Car, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Car, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Car, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Customer, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Customer, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Customer, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.StartLocation, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.StartLocation, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.StartLocation, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.EndLocation, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.EndLocation, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.EndLocation, "", 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")
}
И вот мой код контроллера.
namespace FlexMVC.Controllers
{
public class ResevationController : Controller
{
// GET: Resevation
public ActionResult Index()
{
return View();
}
// POST: Resevation
[HttpPost]
public ActionResult Create(Resevation resevation)
{
ResevationModels model = new ResevationModels();
resevation.Car = 1;
resevation.Customer = 1;
model.CreateResevation(resevation);
return View(model);
}
}
}
Может кто-нибудь объяснить мне, что я делаю неправильно? и, пожалуйста, скажите, должен ли я также опубликовать код модели.
Редактировать:
Вот код метода CreateResevation.
public void CreateResevation(Resevation resevation)
{
resevation.Car = FindAvaliableCar(resevation.ResevationDate, resevation.ResevationTime);
_db.Resevations.InsertOnSubmit(resevation);
_db.SubmitChanges();
}
Какое действие возвращает представление вы показываете нам? Какое действие вызывается формой submit? Сама форма не указывает, какой вид использовать. Если 'Index' возвращает форму, то вы можете отправить обратно в« Index », который ничего не делает. – David
@David Я новичок в MVC, поэтому я не уверен в этом. Но я хочу, чтобы действие Create было запущено, когда нажала кнопка отправки, которую я нажал. и i dosent действительно имеет значение, с которым я вернусь после нажатия кнопки. Я просто хочу вставить данные на данный момент? если это имеет смысл. –
Вы можете указать, какое действие вызывать при вызове 'Html.BeginForm()'. https://msdn.microsoft.com/en-us/library/system.web.mvc.html.formextensions.beginform.aspx – David