查询字符串中的 ViewModel 属性在到达控制器时未绑定

J86

我在 ASP.net MVC 应用程序中工作,我有一个产品表,如屏幕截图所示:

产品表

我希望能够过滤该产品表,并且我希望通过查询字符串参数(作为 a GET进行过滤,以便可以共享 URL。

页面的 ViewModel 是这样的:

public class InventoryReportViewModel
{
  public SearchViewModel Search { get; set; } // 2 string props [Type and Term]
  public IEnumerable<ProductViewModel> Products { get; set; }
  public PaginationViewModel Pagination { get; set; } // 3 int props [currentPage, recordsPerPage, totalRecords]
}

我正在使用 Razor 助手来绘制过滤器输入,如下所示:

@Html.EditorFor(m => m.Search.Term, new { htmlAttributes = new { @class = "form-control" } })

而且我已经设置了我的表单来使用GET

@using (Html.BeginForm("Inventory", "Report", FormMethod.Get))
{
   // form elements
}

ReportController.cs有以下与我的问题相关的方法:

public ActionResult Inventory(string SearchTerm, string SearchType, int page = 1)
{
  var viewModel = _reportService.GetProducts(page, SearchTerm, SearchType);
  return View(viewModel);
}

当我传递搜索词并单击过滤结果按钮时,我确实到达了上面的控制器方法,但是SearchTermSearchTypenull.

我知道如何“破解”它来工作,例如,如果我这样做:

<input type="text" name="SearchTerm" class="form-control"/>

那么我输入的搜索词会被Controller拾取,但是没有其他方法了吗?

乌斯曼

因为你已经viewmodelSearch

public SearchViewModel Search { get; set; }

你只需要像这样将它传递给控制器

public ActionResult Inventory(SearchViewModel Search, int page = 1
{
  var viewModel = _reportService.GetProducts(page, Search.Term, Search.Type);
  return View(viewModel);
}

你得到的null是因为textboxes被命名为Search.Term这就是它与参数不匹配的原因。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在控制器中获取HTTP请求和查询字符串PARAMS

根据在查询字符串中传递的值设置未绑定DropDownList的值

Web API控制器-查询字符串中的'action'参数

将复杂类型的集合与查询字符串中的其他属性绑定

.htaccess中的查询字符串未返回双斜杠

在视图控制器中绑定元组或字符串以使用RXSwift查看模型

JavaScript中的字符串替换(例如查询绑定)

在UWP中从ViewModel B更新ViewModel A的属性

如何从聚合的ViewModel更新模型中的字符串属性

在处理之前在控制器中更改微风查询字符串

绑定到ViewModel和CodeBehind中的属性

绑定DataGridTextColumn中的ViewModel属性

在Asp.Net MVC 4中删除Url中查询字符串格式的控制器和操作

给定带有特殊字符键的查询字符串时,控制器动作中的MVC模型绑定

灰烬绑定控制器属性以在另一个控制器中查询

XAML绑定未反映ViewModel中的更改

ViewModel值未返回给控制器

在mvc中的控制器名称后传递查询字符串

wpf c#数据绑定以使用viewModel对象的属性设置字符串

查询字符串以点结尾时,控制器动作被调用两次

从 ViewModel 属性绑定 WPF 中的 ImageAwesome 对象

在 ViewModel 中绑定对象的属性

MVC 控制器在验证查询字符串参数时应返回 400

基于 pg_search 查询字符串在 Rails 5 控制器中设置布局

在控制器中获取查询字符串参数,laravel

如何通过模型绑定将原始查询字符串作为控制器操作参数?

来自 ViewModel 的绑定字符串值未在 UI 元素中更新

未显示反应查询字符串

查询字符串未正确执行