【发布时间】:2022-10-15 23:21:15
【问题描述】:
我是 ASP.NET Core MVC 的新手。尝试制作一个简单的更新页面,其中模型(来自另一个数据服务)与表绑定。每行都有一个更新按钮。有一些字段映射到文本框并且是可编辑的。
我想在不使用 jQuery 或 AJAX 的情况下获取控制器内文本框中的可编辑值。我确信在普通的 ASP.NET Core 功能中必须有一种方法。
模型:
public class Employee
{
public string Name { get; set; }
public string Location { get; set; }
}
看法:
@model IEnumerable<AspNetCoreMVC.Models.Employee>
@{
ViewData["Title"] = "Home";
}
<table class="table" style="width:fit-content">
<thead>
<tr>
<th>
@Html.DisplayNameFor(Model => Model.Name)
</th>
<th>
@Html.DisplayNameFor(Model => Model.Location)
</th>
<th>
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@item.Name
</td>
<td>
@Html.TextBoxFor(m => item.Location)
</td>
<td>
@Html.ActionLink("Update","UpdateAction","Home",new { updatedLocation = item.Location })
</td>
</tr>
}
</tbody>
</table>
控制器:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using AspNetCoreMVC.Models;
namespace AspNetCoreMVC.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
var employees = new List<Employee>();
employees.Add(new Employee { Name="Abcd", Location="abcdLocation1"});
employees.Add(new Employee { Name = "Efgh", Location = "EfghLocation2" });
return View(employees);
}
public IActionResult UpdateAction(string updatedLocation)
{
var employees = new List<Employee>();
employees.Add(new Employee { Name = "Abcd", Location = "abcdLocation1" });
employees.Add(new Employee { Name = "Efgh", Location = "EfghLocation2" });
return View("Index", employees);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}
目前我只得到与单元格模板文本框绑定的相同值。
请问如何确保在控制器中接收到文本框位置中更改的文本?
【问题讨论】:
-
使用
<form>并将该表单提交到服务器。目前你只有一个链接。
标签: c# asp.net-mvc asp.net-core asp.net-core-3.1