【问题标题】:How to change the @Model in a partial view in ASP.NET 5 MVC如何在 ASP.NET 5 MVC 的局部视图中更改 @Model
【发布时间】:2021-02-20 10:12:44
【问题描述】:

我需要帮助来制作部分视图。我创建了一个局部视图,我想更改其中的模型。另外,我希望我的局部视图由控制器控制。

我不明白为什么不行。

这是视图的标记:

<select asp-for="Categorie" id="categorie">
    <script>
        $('#categorie').load('/Home/BudgetSearch');
    </script>
</select>

这是我的控制器:

public IActionResult BudgetSearch()
{
        //var bdd = new ComptesBudgetViewModel();

        var query = _context.Budget.Select(oa => oa.Categorie).Distinct();

        return PartialView("BudgetSearch", query.ToList());
}

这是我部分视图的代码:

@model Comptes.core.data.Models.Budget

<option value="" selected>Choisir</option>
@foreach (var budget in Model.Categorie)
{
    <option value="@budget">@budget</option>
}

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您不太清楚自己是使用完整的经典 ASP.NET MVC(在完整的 .NET Framework 上)还是新的跨平台ASP.NET Core(以及上面的 MVC 堆栈)。请准确准确地告诉我们您使用的是什么!
  • 我用的是ASP.NET,最后一个:不是.net core也不是.net framework
  • .NET Framework 上的 ASP.NET is - “完整”的经典 .NET(最高 v4.8) - 删除了 asp.net-core 标签
  • 局部视图所需的模型不是列表,而是Budget,所以这个PartialView("BudgetSearch", query.ToList())会在运行时导致异常。如果您希望它是Budget 的列表,则应将模型更改为@model IList&lt;Comptes.core.data.Models.Budget&gt;
  • 这是一件好事,但我之前有一个问题。控制器不会重定向到局部视图。

标签: c# asp.net-mvc asp.net-mvc-partialview


【解决方案1】:

假设您的徽章具有类别属性,请更改您的代码:

@model IEnumerable<Comptes.core.data.Models.Categorie>

<option value="" selected>Choisir</option>
@foreach (var category in @Model)
{
    <option value="@category.Name">@category.Name</option>
}

也许你需要改变你的行为:

public IActionResult BudgetSearch()
{
        //var bdd = new ComptesBudgetViewModel();

        var query = _context.Set<Categorie>().ToList()

        return PartialView("BudgetSearch", query);
}

【讨论】:

  • 这正是我要寻找的!非常感谢你
  • 非常感谢我。如果你能接受答案就好了。
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多