gpt4 book ai didi

c# - 如何处理许多可能的值来进行查询?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:24 25 4
gpt4 key购买 nike

我正在构建一个 MVC 应用程序,用户可以在其中使用大量过滤器来准确获得他想要的内容。

下面是基于 Controller 方法的那些过滤器的概述:

//
// GET: /Card/SearchIndex
public ActionResult SearchIndex(string objName, string objType, string objCostSymbol, string objCost, string powerSymbol,
string powerValue, string ratingSymbol, string ratingValue, string ownerName, string objSet,
string objRarity, string addCostValue, int? objNumber,
string addCostValue2, string addCostValue3, string addCostValue4, string addCostValue5, string addCostValue6,
bool? blueColor, bool? redColor, bool? yellowColor, bool? purpleColor, bool? greyColor, bool? blackColor,
bool? musicColor, bool? allColor)
{
// MORE CODE HERE...
}

我想知道处理所有这些过滤器的最佳方式是什么,以及如何根据给定参数获取 objInfo 列表。请记住,某些值可能为空。到目前为止,我所做的就是加载“所有”我能加载的 objInfo,然后通过删除不需要的项目对它们进行排序,这在我看来是“不聪明”的,但我是 MVC App 的新手,而且我'我正在努力寻找一种更好的方法来做到这一点。

编辑

这是生成数据的 View :

@using System.Web.Mvc.Html
@model PagedList.IPagedList<MvcApp.Models.ObjInfo>

@{
ViewBag.Title = "SearchIndex";
}

<h2>Objects Management</h2>

<p>
@Html.ActionLink("Create New Obj", "Create")
@using (Html.BeginForm()){
<p>
<label>
Obj Colors : Check a box to search for a color.
</label>
All: @Html.CheckBox("allColor", true)<br/>
Blue: @Html.CheckBox("blueColor", true)
Red: @Html.CheckBox("redColor", true)
Yellow: @Html.CheckBox("yellowColor", true) <br/>
Purple: @Html.CheckBox("purpleColor", true)
Grey: @Html.CheckBox("greyColor", true)
Black: @Html.CheckBox("blackColor", true)
Music: @Html.CheckBox("musicColor", true)
</p>
<p>
<label>
Obj Values: Select a value in the list below.
</label>
Obj Number: <input type="number" min="0" max="9999" name="cardNumber" value="int" style="width: 70px"/><br/>
Additional Cost (contains): @Html.DropDownList("addCost", String.Empty) + @Html.DropDownList("addCost2", String.Empty)
+ @Html.DropDownList("addCost3", String.Empty) + @Html.DropDownList("addCost4", String.Empty)
+ @Html.DropDownList("addCost5", String.Empty) + @Html.DropDownList("addCost6", String.Empty) <br/>
Cost: @Html.DropDownList("objCostSymbol", "=") @Html.DropDownList("objCost", String.Empty)<br />
Power: @Html.DropDownList("powerSymbol", "=") @Html.DropDownList("powerValue", String.Empty)<br/>
Rating: @Html.DropDownList("ratingSymbol", "=") @Html.DropDownList("ratingValue", String.Empty)<br />
<label>
Obj Text: Write a name, part of a name, or a word.
</label>
Obj Name: @Html.TextBox("objName") <br/>
Owner: @Html.TextBox("ownerName") <br />
<label>
Obj Categories: Select a category in the list below.
</label>
Type: @Html.DropDownList("objType","All") <br/>
Obj Set: @Html.DropDownList("objSet", "All") <br/>
Rarity: @Html.DropDownList("objRarity", "All")<br />
<div class="float-right">
<input type="submit" value="Filter" name="submitbutton">
</div>
</p>
}
</p>
<span style="color:red; font-size: 1.7em; font-style: italic;">@ViewData["ErrorMessage"]</span>
<table>
<tr>
<th>Obj Name</th>
<th>Obj Number</th>
<th>Obj Color</th>
<th>Additional Cost</th>
<th>Cost</th>
<th>Obj Type</th>
<th>@Html.ActionLink("Power", "SearchIndex", new {sortOrder=ViewBag.PowerSortParm})</th>
<th>@Html.ActionLink("Rating", "SearchIndex", new {sortOrder=ViewBag.RatingSortParm})</th>
<th>Rarity</th>
<th>Obj Set Name</th>
<th>Owner Name</th>
<th></th>
</tr>

@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.m_ObjName)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjColor)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjAddCost)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjCost)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjType)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjPower)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjRating)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjRarity)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjSet.m_ObjSetName)
</td>
<td>
@Html.DisplayFor(modelItem => item.m_ObjOwner)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.m_ObjID }) |
@Html.ActionLink("Details", "Details", new { id=item.m_ObjID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.m_ObjID })
</td>
</tr>
}
</table>

<div>
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount

@if (Model.HasPreviousPage)
{
@Html.ActionLink("<<", "SearchIndex", new {page = 1, sortOrder = ViewBag.CurrentSort})
@Html.Raw(" ")
@Html.ActionLink("< Prev", "SearchIndex", new {page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort})
}
else
{
@:<<
@Html.Raw(" ");
@:< Prev
}

@if (Model.HasNextPage)
{
@Html.ActionLink("Next >", "SearchIndex", new {page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort})
@Html.Raw(" ")
@Html.ActionLink(">>", "SearchIndex", new {page = Model.PageCount, sortOrder = ViewBag.CurrentSort})
}
else
{
@:Next >
@Html.Raw(" ")
@:>>
}
</div>

任何建议都会帮助我做得更好,谢谢。

最佳答案

你通常在 JavaScript 中遇到这个问题吗?您将创建一个 option 对象,例如

var op = {
cardName : "..",
cardType : "" ,
...
}

并将其传递给一个函数。正确吗?

C# 中也是如此。定义一个,比如说,Conditions 类,比如

public class Conditions {
public string CardName {get;set;}
public string CardType {get;set;}
..
}

并将其传递给您的函数,该函数控制该类型的属性值以在之后执行相应操作。

关于c# - 如何处理许多可能的值来进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16046178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com