2012-03-09 3 views
0

Я создаю помощника с генератором бритвы, чтобы построить управление вырезом, в котором будут две кнопки-переключатели (да/нет) Я хочу использовать Html.BeginForm для этого.Html.BeginForm() с генератором бритвы

Но не может этого сделать.

Вы знаете, как это сделать или как это сделать?

Спасибо.

Edit:

Когда я ставлю этот код

@using (Html.BeginForm()) { 
    <input type="radio"/> 
    <input type="radio"/> 
} 

Я получаю эту ошибку

'System.Web.WebPages.HtmlHelper' does not contain a definition for BeginForm and no extension method 
'BeginForm' accepting a first argument of type 'System.Web.WebPages.Html.HtmlHelper'could be found 
+0

Что ты имеешь в виду «не могу это сделать»? Есть ли сообщение об ошибке? – eouw0o83hf

+0

«System.Web.WebPages.HtmlHelper» не содержит определения для BeginForm и не используется метод расширения «BeginForm», принимающий первый аргумент типа «System.Web.WebPages.Html.HtmlHelper». – kbaccouche

ответ

3

Это, скорее всего, проблема с именами или ссылкой.

Прежде всего, убедитесь, что в ваших проектных ссылках отображается System.Web.WebPages. Затем добавьте

@using System.Web.WebPages 

в начало вашего просмотра. Если это исправить, вы можете переместить ссылку в web.config за this answer on the same type of topic

1

Пожалуйста, ваш код, когда вы задаете вопрос, чтобы мы могли увидеть, что вы делать неправильно. Попробуйте следующее:

@using (Html.BeginForm()) { 
     <input type="radio"/> 
     <input type="radio"/> 
} 
3

Добавьте этот код в свою вспомогательную функцию, когда ваши вспомогательные функции находятся в папке App_Code.

var Html = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Html; 
var Ajax = ((System.Web.Mvc.WebViewPage)WebPageContext.Current.Page).Ajax; 

Не забудьте включить правильные пространства имен в файле: @using ....

+0

Раздражает необходимость включения эти ссылки в каждом вспомогательном методе, и Resharper жалуется на переменную обфускацию и т. д. – trevorgk

2

Для меня это было недостающее пространство имен, да, но не один упомянутой eouw0o83hf:

@using System.Web.Mvc.Html; 
0

Я столкнулся с тем же вопросом и просто решил. Я изменил версию в файле web.config в папке views. Вот мой предыдущий код

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.0.2.2**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Optimization"/> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="CMSSol" /> 
    </namespaces> 
</pages> 

и вот мой новый код

<system.web.webPages.razor> 
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, **Version=5.0.0.0**, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Optimization"/> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="CMSSol" /> 
    </namespaces> 
</pages>