cshtml中带有javascript参数的datatable.select

cshtml中带有javascript参数的datatable.select,javascript,c#,asp.net-mvc,razor,Javascript,C#,Asp.net Mvc,Razor,我的模型代码 public class viewCase { public List<string> lstCategory { get; set; } public DataTable dtWrkTsk { get; set; } } 我的cshtml代码 function getCaption() { var cat= $("#layout option:selected").text(); //variable for select condition

我的模型代码

public class viewCase
{
  public List<string> lstCategory   { get; set; }
  public DataTable dtWrkTsk { get; set; }
}
我的cshtml代码

 function getCaption() {

var cat=    $("#layout option:selected").text();  //variable for select condition

var arr =  @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
Model.dtWrkTsk.Select("Catagory='" + cat + "'") ));  //<- error here
}
当前上下文中不存在其给我的错误“cat”

如果我尝试

function getCaption() {

      var cat=    $("#layout option:selected").text();  //variable for select condition
     var arr =  @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
       Model.dtWrkTsk.Select("Catagory='" +@<text> cat </text> + "'") ));}  //<- error here
CS1660:无法将lambda表达式转换为类型“string”,因为它 不是委托类型

我试图保持datatable与服务器的断开连接,这样每当用户更改Html.DropDownList函数getCaption中的值时,都会调用该函数

我只需要datatable中的select条件,在这里我使用javascript变量传递选择类别

如何在datatable.select中传递javascript变量var arr=@Html.Raw中的@Html.Raw。。。razor代码,在发送到视图之前在服务器上解析。它包括一个.Select查询,该查询使用的javascript变量在该点上不存在——它不在范围内

您需要将集合分配给一个javascript变量,并根据所选选项筛选javascript中的结果数组

以下假设dtWrkTsk是包含属性字符串类别的模型的集合,并且您希望对该集合进行文件管理,以仅返回其类别值与所选选项匹配的对象

@Html.DropDownListlayout,Model.lstcontegory.Selectm=>newselectListItem{Text=m,Value=m},全部 或


额外建议阅读-

您是否在$document.ready中使用JS代码?另外,请提供有关您的代码的更多详细信息。@ElmerDantas:edited question您的问题不清楚,您不回答我的问题,但是,如果我不明白您想要什么,只需检查或并选择最适合您的选项。我在这里尝试做的是,当用户更改下拉列表中的值时,我有一个datatable和dropdownlist。我需要使用datatable从我的datatable中筛选数据。selectcategory='+javascriptvar+',但这里的问题是这个datatable.select在我的cshtml文件中,并且自datatable来自模型,yes getCaption是我的javascript函数为什么要在客户端过滤datatable?抱歉,这样做对我没有任何意义。var arr=@Html.RawJson.EncodeModel.dtWrkTsk给我序列化错误错误是什么?我假设它是一个循环引用,在这种情况下,您需要更改视图模型。是的,循环引用错误我在视图模型中更改了什么?很容易修复。但您需要编辑问题并显示dtWrkTsk的主模型和模型,并指出您希望在视图中访问dtWrkTsk的哪些属性。序列化数据表始终是一个问题。创建一个视图模型,比如CMSTasksWorkFlowVM,它包含WorkFlowID、Subject、Category三个属性,并将数据表投影到该视图模型的集合中,以便主模型中的属性成为public IEnumerable dtWrkTsk{get;set;}
function getCaption() {

      var cat=    $("#layout option:selected").text();  //variable for select condition
     var arr =  @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(
       Model.dtWrkTsk.Select("Catagory='" +@<text> cat </text> + "'") ));}  //<- error here
<div id="addTask" class="modal fade " aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content round">
                <div class="modal-header"><h4>New Task </h4></div>
                <div id="tbody" class="modal-body" style="height:20%">
                    @Html.DropDownList("layout", Model.lstCategory.Select(m => new SelectListItem { Text = m, Value = m }), "All", new { onclick = "getCaption()" })
                    <div id="dtask" style="width: 80%; overflow: scroll; ">

                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" data-dismiss="modal" class="btn btn-primary"  >OK</button>
                    <button type="button" data-dismiss="modal" class="btn">Cancel</button>
                </div>
            </div>
        </div>
    </div>
@Html.DropDownList("layout", new SelectList(Model.lstCategory), "All")

<script>
    // Assign the collection to a javascript array
    var arr = @Html.Raw(Json.Encode(Model.dtWrkTsk))
    $('#layout').change(function() {
        var selectedCategory = $(this).val();
        // Return all objects in the collection that match
        var result = $(arr).filter(function(index, item) {
            return item.Category === selectedCategory;
        });
        .... // do something with the results
    });
</script>