C# 名为';联系方式';无法在此作用域中声明,因为

C# 名为';联系方式';无法在此作用域中声明,因为,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我创建了一个包含快速联系表单的局部视图。 联系人表单应该从\u布局中呈现,而不传递模型,如下所示 @Html.Partial("_QuickContact") 在\u QuickContact视图中,我想到了这样声明一个变量 @{ContactForm ContactForm = new ContactForm();} 所以我可以把它当作 <div> @Html.TextBoxFor(ContactForm => ContactForm.Email) @

我创建了一个包含快速联系表单的局部视图。 联系人表单应该从
\u布局中呈现,而不传递模型,如下所示

 @Html.Partial("_QuickContact")
\u QuickContact
视图中,我想到了这样声明一个变量

@{ContactForm ContactForm = new ContactForm();}
所以我可以把它当作

 <div>
    @Html.TextBoxFor(ContactForm => ContactForm.Email)
    @Html.ValidationMessageFor(ContactFormm => ContactForm.Email)
 </div>

@Html.TextBoxFor(ContactForm=>ContactForm.Email)
@Html.ValidationMessageFor(ContactFormm=>ContactForm.Email)
因为我不想通过一个模型。(如果我没有弄错的话,这种方法需要元组或包含多个模型的包装器)

不幸的是,我得到了错误

无法在此列表中声明名为“ContactForm”的本地或参数 作用域,因为该名称在封闭的本地作用域中用于定义 局部或局部参数


有什么解决办法吗?

您的模特需要一个
@model ContactForm
声明,然后您可以使用
@Html.TextBoxFor(m=>m.Email)

但是,由于您使用
@Html.Partial()
调用此函数,因此需要将模型(可以是默认实例)传递给Partial,否则将传递主视图中的模型并引发异常

@Html.Partial("_QuickContact", new ContactForm())
另一种方法是使用
Html.Action()
调用一个服务器方法,该方法返回您的部分

[ChildActionOnly]
public PartialViewResult Contact
{
    return PartialView("_QuickContact"); // or return PartialView("_QuickContact", new ContactForm());
}
在布局中

@Html.Action("Contact") // or @{ Html.RenderAction("Contact"); }

您的部分需要一个
@model ContactForm
声明(然后使用
@Html.partial(“\u QuickContact”,new ContactForm())
@StephenMuecke您可以将其作为答案发布吗?谢谢