Страница создания не получает стили и не отправляет параметры в базу данных в

Я использовал Asp.netMVC и создал представление, но страница CreateView не получает стили и не отправляет параметры в базу данных, но работают EditView и DeleteView.

Просмотр кода Добавленный код CkEditors под кодом csHtmls

@model My_E_Shop.Models.Pages

@{
    ViewBag.Title = "Create" + Server.HtmlDecode(Html.DisplayNameFor(model => model).ToString());
}    

<h2>[email protected](model => model)</h2>

@using (Html.BeginForm("Create", "Pages", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()

<div class="form-horizontal">
    @Html.ValidationSummary(true)

    @Html.HiddenFor(model => model.PageID)
    @Html.HiddenFor(model => model.CreateDate)
    @Html.HiddenFor(model => model.PageSee)


    <div class="form-group">
        @Html.LabelFor(model => model.PageTitle, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.PageTitle)
            @Html.ValidationMessageFor(model => model.PageTitle)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.ShortDescription, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.ShortDescription)
            @Html.ValidationMessageFor(model => model.ShortDescription)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.PageText, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.PageText)
            @Html.ValidationMessageFor(model => model.PageText)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.ImageName, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.Kendo().Upload().Name("imgUp")
            @Html.ValidationMessageFor(model => model.ImageName)
        </div>
    </div>




    <div class="form-group" id="buttons">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-primary" />
            @Html.ActionLink("Back", "Index")
        </div>
    </div>
</div>
}

@section Scripts
{
    <script src="/ckeditor/ckeditor.js"></script>
    <script src="/ckeditor/adapters/jquery.js"></script>

    <script>
        $(function () {
            $('#PageText').ckeditor();
        });
    </script>

}

Код контроллера

    [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "PageID,PageTitle,ShortDescription,PageText")]         
Pages pages, HttpPostedFileBase imgUp)
        {
            if (ModelState.IsValid)
            {
                if (imgUp != null)
                {
                    if (CheckContentImage.IsImage(imgUp))
                    {
                        pages.ImageName = Guid.NewGuid().ToString().Replace("-", "") + 
Path.GetExtension
                            (imgUp.FileName);
                    imgUp.SaveAs(Server.MapPath("/PageImages/" + pages.ImageName));

                }
                }
                pages.PageSee = 0;
                pages.CreateDate = DateTime.Now;
                db.Pages.Add(pages);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(pages);
        }

person Bijan Amouzad    schedule 16.10.2019    source источник
comment
В чем проблема, что вы не можете получить значение PageText?   -  person jishan siddique    schedule 16.10.2019
comment
да, в CreateView (Mode) текст страницы и изображение не сохраняются в базе данных, а в EditView и DeleteView Works.   -  person Bijan Amouzad    schedule 17.10.2019
comment
Добавьте один атрибут в действие [ValidationInput(false)].   -  person jishan siddique    schedule 17.10.2019
comment
Проблема с параметрами отправки (значение текстового поля) Привязка строки 3 к управляющему коду. Я удалил идентификатор страницы в строке 3, и это исправлено.   -  person Bijan Amouzad    schedule 20.10.2019
comment
Вам необходимо включить imgUp в параметры ваших действий, аналогичные тем, которые вы упомянули в Bind(Include = "PageID,PageTitle,ShortDescription,PageText,imgUp")] Pages pages, HttpPostedFileBase imgUp)   -  person jishan siddique    schedule 20.10.2019


Ответы (2)


Пожалуйста, проверьте в инструменте разработчика браузеров Chrome все необходимые CSS загружены или нет в разделе source

person Hrishikesh    schedule 16.10.2019
comment
Как проверить можно ли проверить? - person Bijan Amouzad; 17.10.2019

Вы можете создать класс ViewModel или изменить свой класс Pages, добавив HttpPostedFileBase:

public class Pages
{
    public string PageTitle{ get; set; }

    // ... other fields here ...

    public HttpPostedFileBase imgUp { get; set; }
}

И в контроллере:

[HttpPost]
public ActionResult Create(Pages pages)
{
    // ... 

    if (pages.imgUp != null)
    {
       // ... your code here
    }

    // the rest of code
}

Однако, если вы предпочитаете не добавлять HttpPostedFileBase в класс модели, вы можете попытаться обработать отправку через Ajax. Например:

var formData = new FormData();    
formData.append( 'file', input.files[0] );

$.ajax({
  url: '/Pages/Create',
  data: formData ,
  dataType: 'json',
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    alert(data);
  }

Для получения дополнительных объяснений вам рекомендуется прочитать мой ответ в этой теме: https://stackoverflow.com/a/58354204/4687359< /а>

Надеюсь, это помогло... :)


Наконец, если вы хотите загрузить несколько файлов, соответствующим образом измените класс модели:

public List<HttpPostedFileBase> imgUp { get; set; }

дополнительные пояснения здесь: https://stackoverflow.com/a/21677152/4687359

person A. Nadjar    schedule 16.10.2019