【问题标题】:MVC: using controller data in viewMVC:在视图中使用控制器数据
【发布时间】:2013-02-13 14:09:08
【问题描述】:

我想使用 MVC 在图表中显示根据用户输入 startdateenddate 在特定日期范围内找到的数据。为此,我需要 json 数据。 我可以根据用户输入获取 json 数据,但无法看到图表,因为我无法使用url:Machines/Parameter

index.cshtml

<body>

 @using (Html.BeginForm("Parameter", "Machines", FormMethod.Post))
{
<div>

   Start Date:  <input type="datetime" id="start" name="start" />

   End Date: <input type="datetime" id="end" name="end" />

</div>
 <input type="submit" value="OK" /> 
Html.EndForm();}

MachinesController.cs

public ActionResult Index()
{
    return View();

}


public ActionResult Parameter(DateTime start, DateTime end)
{
    MachinesSql a = new MachinesSql();

    var data = Json(a.SqlAccessParameter(start, end), JsonRequestBehavior.AllowGet);

    return View(data);

}

模型:Machines.cs

namespace DenemeReport.Models
{


public class Machines
{
    [Key]
    public int AutoKey;
    public string MachineGroup;
    public DateTime StartDate;
    public DateTime EndDate;
    public int Duration;

}
public class MachinesDBContext : DbContext
{
    public DbSet<Machines> Machine { get; set; }

}

 public List<Machines> SqlAccessParameter(DateTime startDate, DateTime endDate)
 {

    SqlConnection myConnection = new SqlConnection(connstr);
    myConnection.Open();
    SqlCommand myCommand = new SqlCommand("DateRange",myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;
    myCommand.Parameters.Add("@SP_startDate", SqlDbType.DateTime).Value =startDate;
    myCommand.Parameters.Add("@SP_endDate", SqlDbType.DateTime).Value = endDate;

    SqlDataAdapter dataAdapter = new SqlDataAdapter();
    myCommand.ExecuteNonQuery();
    dataAdapter.SelectCommand = myCommand;

    DataSet dSet = new DataSet();
    dataAdapter.Fill(dSet);

    myConnection.Close();

    List<Machines> machinePost = new List<Machines>();
    foreach (DataRow row in dSet.Tables[0].Rows)
    {
        Machines mac = new Machines();
        mac.AutoKey = (int)row["AUTOKEY"];
        mac.MachineGroup = (string)row["MACHINEGROUP"];
        mac.Duration = (int)row["DURATION"];
        mac.StartDate = (DateTime)row["STARTTIME"];
        mac.EndDate = (DateTime)row["ENDTIME"];
        machinePost.Add(mac);
    }
    return machinePost;
}

Parameter.cshtml(包含图表信息的参数操作视图)

<title>Intro</title>

<script src="~/Scripts/jquery-1.8.3.min.js"></script>
<script src="~/Scripts/kendo/kendo.all.min.js"></script>
<link href="~/Scripts/kendo/kendo.common.min.css" rel="stylesheet" />
<link href="~/Scripts/kendo/kendo.default.min.css" rel="stylesheet" />

</head>

<div id="chart"></div>
<div id="chart2"></div>
<body>

 <script>

$("#chart").kendoChart
    ({
        theme: $(document).data("kendoSkin") || "default",
        title: {
            text: "Pie Chart Test"
        },
        legend: {
            position: "bottom",
        },

        dataSource:
            {

                transport:
                    {
                        read:
                             {
                                url: "Machines/Parameter", // This part create the problem I think. The url does not work.
                                    dataType: "json",
                                    contentType: 'application/json; charset=utf-8'
                                }


                    }
            },

        seriesDefaults: {
            labels: {
                visible: true,
                format: "{0}"
            }
        },

        series: [{

            type: "pie",
            field: "Duration",
            categoryField: "MachineGroup"
        }],

        tooltip: {
            visible: true,
            format: "{0}"
        }
    });
</script>
</body>

【问题讨论】:

  • 我无法理解你的问题对不起..
  • 你不需要usingHtml.EndForm()。不确定这是否与您的问题有关,但 using 块将在结尾大括号处隐式关闭您的表单。如果您没有将 BeginForm() 放在 using 块中,则只需显式调用 EndForm()
  • @GalacticCowboy 感谢您的回复,我尝试了您所说的,但没有成功。也许问题的根源在这个块我不确定

标签: c# javascript asp.net-mvc json kendo-ui


【解决方案1】:

假设您使用的是 Razor 语法,请将 "Machines/Parameter" 替换为 "@Url.Action("Parameter", "Machines")"

【讨论】:

  • 感谢 ken2k 但我无法在 kendo url 属性中使用它,它给出了语法错误。
  • @pln “它不起作用”是什么意思?您的控制器操作是否已执行?您是否检查了您的请求所针对的网址?
  • 我的控制器动作运行正常并成功返回 json 数据,但我无法在视图中使用转换后的数据来显示图表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多