【问题标题】:Controller and index view Id and name match. .net MVC控制器和索引视图 ID 和名称匹配。 .net MVC
【发布时间】:2021-02-16 12:21:43
【问题描述】:

在我的练习中,我在控制器中有这样的代码

 public IActionResult Index(int catId = 0)
    {
        IEnumerable<Product> products;
        if (catId != 0)
        {
            products = _categoryRepository.GetCategoryByIdWithProducts(catId).Products;
        }
        else
            products = _productRepository.GetAllProducts();
        ViewData["SelectList"] = GetCategoriesSelectList();
        return View(products);
    }

以及 View 中的此类代码

<div class="form-group">
        <label for="categoryId">Filter by category</label>
        <select id="catId" name="catId" asp-items="@(ViewData["SelectList"] as SelectList)" class="form-control">
            <option value="">-- all categories --</option>
        </select>
    </div>
    <button type="submit" class="btn btn-secondary ml-1">Submit</button>

而且我真的不明白视图中的这个标签 id="catId" name="catId" 和控制器 Index(int catId = 0) 是如何相互匹配的。

如果我删除 id="catId" 提交按钮有效,如果我删除 name="catId" 则无效。

mvc 看起来或参数和名称是否匹配或它是如何工作的?

亲切的问候,伊利亚

【问题讨论】:

    标签: .net asp.net-core model-view-controller


    【解决方案1】:

    mvc 看起来或参数和名称是否匹配或它是如何工作的?

    是的,name 属性用于引用 JavaScript 中的元素,或者在提交表单后引用表单数据。只有具有 name 属性的表单元素才会在提交表单时传递它们的值。您可以使用 f12 网络选项进行检查。

    另外,mvc中的modelbinding也是基于name而不是id。

    【讨论】:

      【解决方案2】:
      • id 用于通过文档对象模型(通过 JavaScript 或使用 CSS 设置样式)识别 HTML 元素。 id 在页面中应该是唯一的。
      • name 对应于表单元素并标识回发到服务器的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多