Razor中的全局/本地范围MVC
我最近开始深入研究MVC Razor网络编程,并且我几乎坚持了一些基础知识。Razor中的全局/本地范围MVC
我有这样的代码:
@ {
using WebMatrix.Data;
WebGrid grid;
if (!Request.QueryString["partID"].IsEmpty())
{
var backQuery = Request.QueryString["partID"];
var db = Database.Open("SQLServerConnectionString");
var baseQuery = "SELECT * FROM Person.Person WHERE FirstName [email protected]";
var selectedData = db.Query(baseQuery, backQuery);
grid = new WebGrid(source: selectedData);
}
grid.GetHtml(); }
那么这背后的想法是让用户表单将从数据库得到的东西,并显示它回使用的WebForms用户的WebGrid功能。
但是,我在上面的代码中存在问题,因为grid.GetHtml()生成了作用域问题的错误。这是Razor语法范围确定的一些具体问题,因为这应该在正常的C#中工作,或者是我错过的其他东西。
谢谢。
无法评论,因为我还没有声望。
这里有几件事情:
- 添加一些异常细节。
- 我们无法看到您正在使用的db.Query库以及您正在使用的WebGrid版本。
- 如果“partId”实际上是空的,那么就是在空引用上调用方法。
- 当使用MVC模式时,尽量避免在视图中使用这种逻辑。至少把它放在控制器(或者存储库,如果你喜欢这种事情)并将结果提供给模型。为模型提供默认数据。
你似乎在这里点。它可能是返回NULL引用,然后“显示它”而没有任何数据。我会尝试添加一些默认值。 –
这有助于你解决你的问题吗? –
DaveG,我解决了这个问题。你帮助我认识到价值已经空无一人,并且导致了一个错误。因为这个原因,我不得不重新格式化整个概念,最后我在IF子句中做了这个。你可以在这里查看当前的代码:https://dotnetfiddle.net/VVEDJJ –
如果你有范围问题,那么放置代码:grid.GetHtml(); @ {}之外,因为该块用于编写c#代码。谢谢 –