Создайте первый ключ даты и времени.Мой контроллер лесов находит ММ / дд / гггг вместо дд / мм / гггг - PullRequest
0 голосов
/ 20 сентября 2018

Требуется некоторая помощь, пожалуйста:

Составьте первый (преобразование доступа). Составной ключ - CalendarDate и Round.

Из Index.cshtml

<tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.CalendarDate)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Round)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.SundayComp)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { CalendarDate = item.CalendarDate.ToString("dd/MM/yyyy"), Round = item.Round }) |
                    @Html.ActionLink("Delete", "Delete", new { CalendarDate = item.CalendarDate.ToString("dd/MM/yyyy"), Round = item.Round })
                </td>
            </tr>
        }
    </tbody>

Запись о01/01 / 2018,1 обнаружен с помощью Edit.cshtml и может быть обновлен.

Запись с 01/02 / 2018,1 находит 02/01/2018 (если запись существует).

Запись 02/01/2018,1 обнаруживает 01/02/2018 (если запись существует).

Похоже, что при маршрутизации используется формат даты США вместо формата AU.

Часть файла Edit.cshtml

<form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="CalendarDate" />
            <input type="hidden" asp-for="Round" />
            <input type="hidden" asp-for="SsmaTimeStamp" />

            <div class="form-group">
                <label asp-for="CalendarDate" class="control-label"></label>
                <input asp-for="CalendarDate" class="form-control" disabled/>
                <span asp-validation-for="CalendarDate" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Round" class="control-label"></label>
                <input asp-for="Round" class="form-control" disabled />
                <span asp-validation-for="Round" class="text-danger"></span>
            </div>
            <div class="form-group">
                <div class="checkbox">
                    <label>
                        <input asp-for="SundayComp" /> @Html.DisplayNameFor(model => model.SundayComp)
                    </label>
                </div>
            </div>
            <div class="form-group">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </form>

Модель Calendar.cs

 public partial class Calendar
    {
        public Calendar()
        [Key]
        [Column(Order = 0)]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime CalendarDate { get; set; }
        [Column(Order = 1)]
        public short Round { get; set; }

        public bool SundayComp { get; set; }
        public byte[] SsmaTimeStamp { get; set; }
    }

Файл Get in CalendarsController.cs

 // GET: Calendars/Edit/5
        public async Task<IActionResult> Edit(DateTime? CalendarDate, short? Round)
        {
            if (CalendarDate == null)
            {
                return NotFound();
            }

            if (Round == null)
            {
                return NotFound();
            }

            var calendar = await _context.Calendar.FindAsync(CalendarDate,Round);
            if (calendar == null)
            {
                return NotFound();
            }
            return View(calendar);
        }

Попытка добавленияпосле Startup.cs ****** Без изменений ******.

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<RequestLocalizationOptions>(options =>
            {
                options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en-AU");
                options.SupportedCultures = new List<CultureInfo> { new CultureInfo("en-AU") };
                options.RequestCultureProviders.Clear();
            });

             services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

и

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var supportedCultures = new[] { new CultureInfo("en-AU") };
            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en-AU"),
                SupportedCultures = supportedCultures,
                SupportedUICultures = supportedCultures
            });

Проверьте настройки региона сервера: дд / мм / гггг

Попытался добавить Route в Startup.cs - ***** Без изменений ******

app.UseMvc (маршруты =>

        {
            routes.MapRoute(
                name: "Calendar",
                template: "{controller=Home}/{action=Index}/{CalendarDate?}/{Round?}");

            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        }

Кончаются идеи

1 Ответ

0 голосов
/ 20 ноября 2018

Спасибо Ясу Икеде за следующее: Проблема в том, что в URL есть '/'.В индексном представлении я изменил ссылку с:

@Html.ActionLink("Edit", "Edit", new { CalendarDate = item.CalendarDate.ToString("dd/MM/yyyy"), Round = item.Round })

на

<a asp-action="Edit" asp-route-CalendarDate="@item.CalendarDate.ToString("o")" asp-route-Round="@item.Round">Edit</a> 

Это исправляет проблему маршрутизации, и редактирование теперь работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...