【发布时间】:2020-10-26 12:12:42
【问题描述】:
我有我的主页索引,用于显示应用程序的各个部分。它包含许多局部视图。我在局部视图上显示数据没有问题,但是当我尝试使我的局部视图之一执行诸如搜索项目之类的操作时。我有搜索部分视图,它需要输入街道名称、国家/地区来显示属性列表。
我的索引使用 viewModel 之类的
public class HomeViewModel
{
public List<Ads> Ads { get; set; }
public AdsImage AdsImages { get; set; }
public List<Category> Category { get; set; }
public List<City> Cities { get; set; }
public List<County> Counties { get; set; }
//ViewModel for _AdSeach paritrial view.
public Search Search { get; set; }
}
我的搜索部分将使用 HomeViewModel 显示文本字段,但在此部分视图中它将使用其他控制器来触发数据。它不会使用家庭控制器,但会使用带有 SearchAds 操作的广告控制器。我的局部视图将如下所示。
<div class="row">
<div class="col-sm-3">
@Html.TextBoxFor(m => m.Search.Category, new { placeholder = "Category", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Search.Category)
</div>
<div class="col-sm-3">
@Html.TextBoxFor(m => m.Search.City, new { placeholder = "City", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Search.City)
</div>
<div class="col-sm-3">
@Html.TextBoxFor(m => m.Search.County, new { placeholder = "County", @class = "form-control" })
@Html.ValidationMessageFor(m => m.Search.County)
</div>
<div class="col-sm-2">
<button type="submit" class="btn btn-primary">ค้นหา</button>
</div>
</div>
在我的主页索引中将使用 Kaiban.ViewModel.HomeViewModel 像这样进行局部视图渲染
@Html.Partial("_AdsSearch", Model.Search)
在我的 Seach 模型中,它用于处理将从部分视图发送的数据,业务逻辑如下所示。
[NotMapped]
public class Search
{
public int? Id { get; set; }
public string Category { get; set; }
public string City { get; set; }
public string County { get; set; }
}
[NotMapped]
public class ProductBusinessLogic
{
private ApplicationDbContext Context;
public ProductBusinessLogic()
{
Context = new ApplicationDbContext();
}
//คลาสที่ใช้ในการค้นหารายชื่อโฆษณา
public IQueryable<Ads> GetProducts(Search searchModel)
{
var result = Context.Adses.AsQueryable();
if (searchModel != null)
{
if (searchModel.Id.HasValue)
result = result.Where(x => x.Id == searchModel.Id);
//เช็คว่า SreetName มีค่ส่งมาหรือปล่าวเเล้ว ค้นหาจากฐานข้อมูลโดยกำหนด StreetName ของ Search Model ตรงกับชื่อถนนไหนบ้างในฐานข้อมูล;
if (!string.IsNullOrEmpty(searchModel.Category))
result = result.Where(x => x.Category.Name.Contains(searchModel.Category));
if (!string.IsNullOrEmpty(searchModel.County))
result = result.Where(x => x.County.Name.Contains(searchModel.County));
if (!string.IsNullOrEmpty(searchModel.City))
result = result.Where(x => x.City.Name.Contains(searchModel.City));
}
return result;
}
}
这是我的广告控制器
public ActionResult SearchAds(Search searchModel)
{
var business = new ProductBusinessLogic();
var model = business.GetProducts(searchModel);
return View(model);
}
当我在局部视图上提交按钮时,我的模型以某种方式收到空值。即使我在部分视图中输入所有字段。
我仍然不知道为什么它会收到 null。有人可以帮我解决这个问题。以及是否有人可以让我更好地了解视图和模型如何用于发送和接收数据。
提前感谢您的帮助:)
【问题讨论】:
-
在您的问题中,请包含从搜索提交按钮接收
Post的控制器方法。 -
您好,我已经添加了我的广告控制器,请您看看。
标签: asp.net asp.net-mvc asp.net-mvc-5