我的应用程序在用C#.Net编码的MVC3 Asp.net。我有一个视图,其中包含一个下拉列表。此下拉列表具有数据库中存在的所有表的名称。我的要求是当用户从下拉列表中选择一个特定的表,然后通过 Json 将表的名称传递给 Json 方法,如下面的代码所示。
$("#MyTableNames").change(function () {
$("#MyDiv").load("/../MyController/MyActionMethod", { TableName:$("#MyTableNames").val() }, function () {
});
});
以上是我将表名传递给控制器中的操作的方式。直到这里一切都很好。以下是我的行动守则。我尝试了两种方法来编写查询...它还包括实体 SQL。没有 LINQ,因为 LINQ 不支持这一点。
//First Method
public ActionResult MyAction(string TableName)
{
var model = db.ExecuteStoreQuery<TableName>("Select * from " + TableName + " where Delete_Flag='" + false + "'");
ViewBag.MyData=model;
return PartialView();
}
//Second Method
public ActionResult GetRecords(string TableName)
{
var sql = "SELECT VALUE emp FROM " + TableName + " AS emp ";
var query = db.CreateQuery <TableName>(sql);
Viewbag.MyData=query;
return PartialView();
}
但是上述方法都没有按<>希望参数作为表...我想将查询结果传递给 VierwBag,以便我可以在视图中填充它。建议我如何实现这一目标。
由于您不知道在设计时要使用的类型,因此很难使用强类型泛型。
另一种方法是将ExpandoObject\dynamic与micro ORM框架(如Massive )一起使用来查询数据。在这种情况下返回的数据是一个 ExpandoObject,如果需要,可以将其返回给客户端。