Json CascadingDropDowns网络矩阵
所以我在学习这个教程 一切都很好,但当我将第一个下拉列表保存到数据库时,将ID传递给我,而我却不知道如何传递名称而不是IDJson CascadingDropDowns网络矩阵,json,razor,webmatrix,Json,Razor,Webmatrix,所以我在学习这个教程 一切都很好,但当我将第一个下拉列表保存到数据库时,将ID传递给我,而我却不知道如何传递名称而不是ID <select id="categoryId" name="categoryId"> <option value="">-- Select Category --</option> @foreach(var category in categories){ &
<select id="categoryId" name="categoryId">
<option value="">-- Select Category --</option>
@foreach(var category in categories){
<option value="@category.CategoryId">@category.CategoryName</option>
}
</select>
这就是创建Json的原因
@{
Layout = null;
var categoryId = UrlData[0].IsEmpty() ? 1 : UrlData[0];
var db = Database.Open("AppCCentro");
var sql = "SELECT ProductId, ProductName FROM produtos WHERE CategoryId = @0 ORDER BY ProductName";
var products = db.Query(sql, categoryId);
Json.Write(products, Response.Output);
}
我不知道我必须更改什么,因此传递给选项所选的值不是ID而是类别的名称。我不确定您想要完成什么,但是如果您的目标是从第一个下拉列表中选择CategoryName而不是CategoryId,您应该修改选项标签,如下所示:
<option value="@category.CategoryName">@category.CategoryName</option>
因为你不再需要分类了
编辑
显然,您必须修改创建json的页面,比如
@{
Layout = null;
var categoryId = UrlData[0].IsEmpty() ? "Beverages" : UrlData[0];
var db = Database.Open("AppCCentro");
var sql = @"SELECT t1.ProductId, t1.ProductName FROM produtos t1
INNER JOIN categorias t2 ON t1.CategoryId = t2.CategoryId WHERE
t2.CategoryName = @0 ORDER BY ProductName";
var products = db.Query(sql, categoryId);
Json.Write(products, Response.Output);
}
如果“/”字符包含在CategoryName中,则可能存在对其进行编码的问题。是的,但问题是如果我将该值更改为第二个下拉列表,则不会open@Nibbler我已经编辑了我的答案,但我不明白您为什么要完成此修改。
<option>@category.CategoryName</option>
var data = db.Query("SELECT CategoryName FROM categorias ORDER BY CategoryName");
var categories = data.Select(item => new SelectListItem {
Text = item.CategoryName
});
@{
Layout = null;
var categoryId = UrlData[0].IsEmpty() ? "Beverages" : UrlData[0];
var db = Database.Open("AppCCentro");
var sql = @"SELECT t1.ProductId, t1.ProductName FROM produtos t1
INNER JOIN categorias t2 ON t1.CategoryId = t2.CategoryId WHERE
t2.CategoryName = @0 ORDER BY ProductName";
var products = db.Query(sql, categoryId);
Json.Write(products, Response.Output);
}