ASP.NET网页表单查询验证(剃刀)

问题描述 投票:0回答:1

我认为至少有几天无法解决一个非常典型的问题。我还是新手,这就是为什么我寻求帮助。

我有一个SQL Server数据库,我的表每4小时更新一次。有些行或整个委员会名称的可能性为50%,在该表的下一次更新中不会出现。

我在页面上获取的数据如下所示,并作为帮助者在母版页上调用:

@helper drawSummaryTable(String option, String tableType)
{
    var db = Database.Open("CommissionsDB");

    var query = "SELECT * FROM SiempelBizRepTabNew";
    var generateData = db.Query(query);
    query = @"SELECT 
                 COUNT(Commission_Name),
                 SUM(Consumption) as Consumption, 
                 SUM(Obligo) as Obligo, 
                 SUM(ActualCosts) as ActualCosts,
                 SUM(Summary) as Summary
             FROM SiempelBizRepTabNew
             WHERE Commission_Name LIKE @0";

    var ComName = "%" + Request["ComName"] + "%";

    var data = db.Query(query, ComName);

    var grid = new WebGrid(data, ajaxUpdateContainerId: "grid", canPage: false, canSort: false);

 <h1>BestellObligo</h1>

    <form method="post">
        <div id="gridContainer">
            <div id="grid" style="width: 100%; height: 150px;">
                Commission name: <input type="text" name="ComName" value="@Request["ComName"]" placeholder="Type here Commission name" />

                <input type="submit" value="Show" />
                <p>Calculated values displayed for: <strong> @Request.Form["ComName"]</strong></p>


                @grid.GetHtml(
          tableStyle: "table",
          alternatingRowStyle: "alternate",
          headerStyle: "header",
          columns: grid.Columns(
                grid.Column("Consumption", "Consumption{Ist Kosten Material}", format: @<text>@item.Consumption.ToString("#,0") €</text>),
                grid.Column("Obligo", "Obligo+ImHaus", format:@<text>@item.Obligo.ToString("#,0") €</text>),
                grid.Column("ActualCosts", "ActualCosts{Ist Fertigung}", format:@<text>@item.AktualNaklady.ToString("#,0") €</text>),
                grid.Column("Summary", "Summary{Gesamt}", format:@<text>@item.Summary.ToString("#,0") €</text>))

)
            </div>
        </div>
    </form>

在第二个查询变量中,将where子句用于过滤器(... LIKE @ 0)。当我输入表中实际存在的佣金名称时,返回的是所有元素的SUM值。即使这种解决方案不太合适,也很好。

问题是,当我想输入表中不再存在的佣金名称时,应用程序将引发错误“无法对空引用执行运行时绑定”

我知道什么是[[问题,我只是想不通如何解决这个问题。我需要以某种方式添加对“数据”查询的验证“即使对于错误键入的佣金名称也可能有用。感谢您的帮助!

我认为至少有几天无法解决一个非常典型的问题。我还是新手,这就是为什么我寻求帮助。我有一个SQL Server数据库,其中有正在使用的表...
asp.net razor asp.net-webpages
1个回答
0
投票
var data = db.Query(query, ComName); //if (data.Count() > 0) if (data.Any()) { var grid = new WebGrid(data, ajaxUpdateContainerId: "grid", canPage: false, canSort: false); //Rest of your code relating to showing your grid here } else { //Show a message here that there was no data }
© www.soinside.com 2019 - 2024. All rights reserved.