ASP.NET CORE MVC C#中的GET和POST问题

元素

我的HttpPost编辑任务没有给我EventMembers列表。我在GET上为我的Edit任务放了一块手表,它可以正常读取我的EventMembers。但是当我得到POST编辑时,我的EventMembers仅在监视窗口以及视图中的输入框内显示System.Collections.Generic.List`1 [System.String]。发生了什么?

模型:

public class Event
    {
        [Required]
        public int EventId { get; set; }

        [ForeignKey("UserId")]
        public virtual SchedulerUser SchedulerUser { get; set; }

        [MaxLength(50)]
        public string EventCreator { get; set; }

        public List<string> EventMembers { get; set; }

        [Required]
        [MaxLength(100)]
        public string Subject { get; set; }

        [MaxLength(400)]
        public string Description { get; set; }

        [Required]
        public DateTime StartTime { get; set; }

        public DateTime? EndTime { get; set; }

        [Required]
        public bool IsFullDay { get; set; }

        [Required]
        public bool AcceptOrDecline { get; set; }

    }

控制器:

// GET: Events/Edit/5
        public async Task<IActionResult> Edit(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var @event = await _context.Events.FindAsync(id);
            if (@event == null)
            {
                return NotFound();
            }
            return View(@event);
        }

// POST: Events/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("EventId,UserId,EventCreator,EventMembers,Subject,Description,StartTime,EndTime,IsFullDay,AcceptOrDecline")] Event @event)
        {
            if (id != @event.EventId)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    @event.SchedulerUser = await _userManager.GetUserAsync(HttpContext.User);
                  
                    _context.Update(@event);

                    if (@event.AcceptOrDecline == false)
                    {
                        _context.Remove(@event);
                    }
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EventExists(@event.EventId))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            return View(@event);
        }

看法:

@model Scheduler.Models.Event

@{
    ViewData["Title"] = "Edit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>Edit</h1>

<h4>Event</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="EventId" />
            <div class="form-group">
                <label asp-for="Subject" class="control-label"></label>
                <input asp-for="Subject" class="form-control" />
                <span asp-validation-for="Subject" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Description" class="control-label"></label>
                <input asp-for="Description" class="form-control" />
                <span asp-validation-for="Description" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EventMembers" class="control-label"></label>
                <input asp-for="EventMembers" class="form-control" />
                <span asp-validation-for="EventMembers" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="StartTime" class="control-label">Start Time</label>
                <input asp-for="StartTime" class="form-control" />
                <span asp-validation-for="StartTime" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="EndTime" class="control-label">End Time</label>
                <input asp-for="EndTime" class="form-control" />
                <span asp-validation-for="EndTime" class="text-danger"></span>
            </div>
            <div class="form-group form-check">
                <label class="form-check-label">
                    <input class="form-check-input" asp-for="IsFullDay" /> All Day
                </label>
            </div>
            <div class="form-group form-check">
                <label class="form-check-label">
                    <input class="form-check-input" asp-for="AcceptOrDecline" /> Accepted
                </label>
                <p style="color:red; font-weight:bold;">Uncheck this to decline invitation. Event will be removed from your schedule.</p>
            </div>
            <div class="form-group">
                <input type="submit" value="Save" class="btn btn-primary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
吉思

由于您的EventMembers模型属性是一个Enumerable列表,因此代表该属性的Html控件应被索引。

<div class="form-group">
   <label asp-for="EventMembers[0]" class="control-label"></label>
   <input asp-for="EventMembers[0]" class="form-control" />
   <span asp-validation-for="EventMembers[0]" class="text-danger"></span>
</div>
<div class="form-group">
   ...
   <input asp-for="EventMembers[1]" class="form-control" />
   ...
</div>

最佳实践是在循环内生成控件。

@for (int i = 0; i < Model.EventMembers.Count; i++)
{
    <div class="form-group">
      ...
      <input asp-for="EventMembers[i]" class="form-control" />
      ...
    </div>
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET Core MVC 和 EF Core 1.1

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

ASP.NET Core MVC身份登录问题

来自分类Dev

Wkhtmltopdf旋转式ASP.NET Core MVC问题

来自分类Dev

使用ASP.NET Core和MVC存储本地文件

来自分类Dev

Blazor和ASP.NET Core 3.0 MVC

来自分类Dev

ASP.NET Core / MVC6中的WebTelemetryInitializerBase

来自分类Dev

如何从ASP .NET Core MVC 1.0中的视图访问会话

来自分类Dev

是否等效于ASP.NET Core MVC中的“ @section”?

来自分类Dev

在ASP MVC .Net Core中何处使用/放置jQuery?

来自分类Dev

更改ASP.NET Core MVC中的默认cookie名称

来自分类Dev

在ASP.NET Core MVC中设置新的登录页面

来自分类Dev

Asp.NET Core MVC Razor页面渲染中的NotSupportedException

来自分类Dev

在ASP.NET Core MVC中创建实体列表

来自分类Dev

在 ASP .Net Core MVC 2.1 模型中访问 List<T>

来自分类Dev

asp.net core mvc 中的自定义授权

来自分类Dev

如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

来自分类Dev

ASP.NET Core MVC视图附件

来自分类Dev

与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

来自分类Dev

C# - Asp.Net MVC 中的时区问题

来自分类Dev

c#ASP.net MVC中的DropDownlist和列表问题

来自分类Dev

c#ASP.net MVC中的DropDownlist和列表问题

来自分类Dev

javascript版本(asp-append-version)在ASP.NET Core MVC中如何工作?

来自分类Dev

ASP.NET CORE MVC路由:尝试在asp-all-route-data中传递字典

来自分类Dev

如何在ASP.NET Core MVC中将js字符串发布到C#

来自分类Dev

Azure中具有MVC和ASP.NET Core的Outputcache IIS

来自分类Dev

同一解决方案中的ASP.NET Core 5 MVC / RazorPages和WebAPI项目

来自分类Dev

ASP.NET MVC Core和Dapper中的全局异常/错误处理

来自分类Dev

在asp net core实体框架mvc中从数据库绑定菜单和子菜单

Related 相关文章

  1. 1

    ASP.NET Core MVC 和 EF Core 1.1

  2. 2

    ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

  3. 3

    ASP.NET Core MVC身份登录问题

  4. 4

    Wkhtmltopdf旋转式ASP.NET Core MVC问题

  5. 5

    使用ASP.NET Core和MVC存储本地文件

  6. 6

    Blazor和ASP.NET Core 3.0 MVC

  7. 7

    ASP.NET Core / MVC6中的WebTelemetryInitializerBase

  8. 8

    如何从ASP .NET Core MVC 1.0中的视图访问会话

  9. 9

    是否等效于ASP.NET Core MVC中的“ @section”?

  10. 10

    在ASP MVC .Net Core中何处使用/放置jQuery?

  11. 11

    更改ASP.NET Core MVC中的默认cookie名称

  12. 12

    在ASP.NET Core MVC中设置新的登录页面

  13. 13

    Asp.NET Core MVC Razor页面渲染中的NotSupportedException

  14. 14

    在ASP.NET Core MVC中创建实体列表

  15. 15

    在 ASP .Net Core MVC 2.1 模型中访问 List<T>

  16. 16

    asp.net core mvc 中的自定义授权

  17. 17

    如何在ASP.NET MVC 6(ASP.NET Core)中获取returnUrl AccessDeniedPath

  18. 18

    ASP.NET Core MVC视图附件

  19. 19

    与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

  20. 20

    C# - Asp.Net MVC 中的时区问题

  21. 21

    c#ASP.net MVC中的DropDownlist和列表问题

  22. 22

    c#ASP.net MVC中的DropDownlist和列表问题

  23. 23

    javascript版本(asp-append-version)在ASP.NET Core MVC中如何工作?

  24. 24

    ASP.NET CORE MVC路由:尝试在asp-all-route-data中传递字典

  25. 25

    如何在ASP.NET Core MVC中将js字符串发布到C#

  26. 26

    Azure中具有MVC和ASP.NET Core的Outputcache IIS

  27. 27

    同一解决方案中的ASP.NET Core 5 MVC / RazorPages和WebAPI项目

  28. 28

    ASP.NET MVC Core和Dapper中的全局异常/错误处理

  29. 29

    在asp net core实体框架mvc中从数据库绑定菜单和子菜单

热门标签

归档