c # MVC код для кнопки редактирования, но нажатие на кнопку редактирования не публикует его - PullRequest
0 голосов
/ 25 апреля 2018

Я использую следующий код для кнопки редактирования, но нажатие на кнопку редактирования не публикует ее

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "PageID,GroupID,Title,ShortDescription,Text,Autor,Tags,Visit,ImageName,ShowInSlider,CreatDateTime")] Page page,HttpPostedFileBase imgUp)
    {
        if (ModelState.IsValid)
        {
            if (imgUp != null)
            {
                if (page.ImageName != null)
                {
                    System.IO.File.Delete(Server.MapPath("/PageImages/" + page.ImageName));
                }



                page.ImageName = Guid.NewGuid() + Path.GetExtension(imgUp.FileName);
                imgUp.SaveAs(Server.MapPath("/PageImages/" + page.ImageName));
            }


            pageRepository.UpdatePage(page);
            pageRepository.save();
            return RedirectToAction("Index");
        }

....

У меня есть отдельный слой данных и хранилище иЯ использую следующий код для контроллера редактирования страниц, но при нажатии на кнопку «Редактировать» не публикуется форма.Хотя это хорошо работает для создания и удаления BTN.мой код просмотра:

<div class="form-horizontal">
    <h4>Page</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    @Html.HiddenFor(model => model.PageID)
    @Html.HiddenFor(model => model.Visit)
    @Html.HiddenFor(model => model.CreatDateTime)
    @Html.HiddenFor(model => model.ImageName)


    <div class="form-group">
        @Html.LabelFor(model => model.GroupID, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("GroupID", null, htmlAttributes: new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.GroupID, "", new { @class = "text-danger" })
        </div>
    </div>

    ....

           <div class="form-group">
        @Html.LabelFor(model => model.ImageName, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            <input type="file" name="imgUp"  id="imgUp"/>
            @Html.ValidationMessageFor(model => model.ImageName, "", new { @class = "text-danger" })
            @if (Model.ImageName != null)
            {
                <img src="/PageImages/@Model.ImageName" class="thumbnail" style="max-width:150px"  />

            }

    .....



    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
</div>

}

Я прослеживаю свой код и нахожу этот ошибку:

 Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.Request","time":"2018-04-25T08:10:44.3663705Z","tags":{"ai.internal.sdkVersion":"web: 2.0.0.25000","ai.device.roleInstance":"Laptop-erfan","ai.operation.name":"GET PageGroup

над тегом горизонтальной формыэтот код:

@model DataLayer.Page
@{
ViewBag.Title = "Edit";}<h2>Edit</h2>@using (Html.BeginForm("Edit", "Pages", FormMethod.Post, new {  enctype = "multipart/form-data" })){ @Html.AntiForgeryToken()

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вам необходимо добавить полную страницу формы в тег формы.Пожалуйста, используйте

@using (Html.BeginForm()) {
  //Put your complete code inside this form...
}

Это создаст тег формы с указанными действиями и типом.Вы также можете указать метод пользовательского действия и тип метода.

0 голосов
/ 25 апреля 2018

Как уже упоминалось в комментариях, не похоже, что у вас есть форма в вашем представлении.Вы можете добавить один, используя:

   @using (Html.BeginForm()) {
       <!-- form contentshere -->
   }

BeingForm также имеет несколько перегрузок, которые вы можете использовать, чтобы изменить направление, метод формы (GET / PUT) и установить атрибуты html.

...