我已经在页面顶部的Razor代码块中初始化了一些变量,如下所示:
@{
var name=string.Empty;
var email=string.Empty;
var subject=string.Empty;
var message=string.Empty;
SetupValidation();
HandlePostRequest();
}
在页面底部(在html标签之后......等)我创建了一些函数:
@functions
{
protected void HandlePostRequest()
{
if(IsPost)
{
name=Request[Fields.Name];
email=Request[Fields.Email];
subject=Request[Fields.Subject];
message=Request[Fields.Message];
if(Validation.IsValid())
{
using (var rep=new ContactLogRepository("usingClassCode"))
{
rep.Insert(name, email, subject, message);
}
Response.Redirect("success.cshtml");
}
}
}
}
但在我看来,该函数无法访问上面的变量,因为我收到此错误:
“编译器错误消息:CS0103:名称'name'不存在于 当前背景“
但我不知道原因,我看了一个在线视频,它完全在它的工作!有没有人对此有解释?感谢
答案 0 :(得分:3)
您需要在函数中声明变量,因为它们与顶部块中声明的变量的范围不同。
试试这个:
@functions
{
protected void HandlePostRequest()
{
if(IsPost)
{
var name = Request[Fields.Name];
var email = Request[Fields.Email];
var subject = Request[Fields.Subject];
var message = Request[Fields.Message];
if(Validation.IsValid())
{
using (var rep=new ContactLogRepository("usingClassCode"))
{
rep.Insert(name, email, subject, message);
}
Response.Redirect("success.cshtml");
}
}
}
}