2016-09-16 3 views
-2

В моем представлении есть раскрывающийся список, который в зависимости от выбранной опции перенаправляет вас на другую страницу/контроллер. Я использую javaScript для получения выбранного значения моего раскрывающегося списка, но у меня проблемы с попыткой манипулировать Html.BeginForm. Вот часть моего зренияasp.net Razor FormExtensions.BeginForm Переменная метода

@{ var newView=0; 
    var page = ""; 
    var cont = ""; 
} 
<script type="text/javascript" language="javascript"> 

function run() { 
    newView = document.getElementById('views').value; 
} 

function ButtonClicked() { 

    alert("View selected: " + newView); 
    // update variables page and cont here? 
} 

</script> 

<select name="views" id="views" onchange="run()"> 
    <option value="0"> </option> 
    <option value="1">Option 1</option> 
    <option value="2">Option 2</option> 
</select> 

@using (Html.BeginForm(page, cont, FormMethod.Post)) 
{ 
    <button onclick="javascript:ButtonClicked()" type="submit" class="btn"> Go </button> 
} 

Как я могу обновить действие кнопки отправки в виде Razor?

Я попытался заменить «Index» и «Home» на переменные и обновить их в своих функциях, но не работает ... какие-либо идеи?

----- Примечание: Я обновил свой вопрос более конкретно с моей проблемой

+0

Что такое "не работает"? Что происходит и каким образом ваш код терпит неудачу? Также обратите внимание, что если вы пишете JavaScript, вам нужно будет изучить фактический отображаемый HTML. Этот серверный код ничего не значит для JavaScript. – David

+0

Извините, я не был достаточно конкретным, чтобы объяснить, чего я хочу достичь. Я планировал обновлять переменные в какой-то функции и базе, используя @using (Html.BeginForm, но, очевидно, он принимает значение этих переменных при рендеринге страницы вначале, что до «обновления». Все еще застряло –

+0

Это все еще неясно, что вы подразумеваете под «манипулированием Html.BeginForm» и т. д. Похоже, вы можете не понимать разницу между кодом на стороне сервера и кодом на стороне клиента. – David

ответ

1

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

<select name="views" id="views" onchange="viewChosen()"> 
     <option value="0"> </option> 
     <option value="action1">Option 1</option> 
     <option value="action2">Option 2</option> 
    </select> 
    <script type="text/javascript"> 
     function viewChosen() { 
      var url = '/Home/' + $('#views').val(); 
      var myView = $('#views').val(); 
      $.post(url); 
     } 
    </script> 

При выборе Option 1, перенаправлять Home/action1 и При выборе Option 2, перенаправлять Home/action2.

+0

Нужно ли все-таки обернуть мою кнопку в любой форме? Если да, то как? Потому что он просто не делает сообщение –

+0

Вам не нужно было использовать кнопку. Метод 'onchange' в выпадающем списке достаточно. –

+0

Мне нужно добавить кнопку в любом случае, но в моем случае, что $ .post (url) не перенаправляет мою страницу. Однако я нашел еще одну запись, в которой кто-то рекомендовал добавить эти строки к методу функции: window.location.replace (url); return false; .... как это работает для меня, но не совсем уверен в том, почему требуется false false. –

1

Я понимаю, что вам нужно перенаправить на другую страницу/контроллера при нажатии на какой-то вариант из выпадающего меню, вы можно использовать @Html.ActionLink("name of the option","Action","Controller") для перенаправления на другой контроллер, как это (это часть навигационной панели), и вы можете иметь @Html.beginForm в виде вы хотите загрузить:

<li>@Html.ActionLink("Home", "Menu", "Menu")</li> 
<li>@Html.ActionLink("About", "About", "Home")</li> 

Но, пожалуйста, лучше объяснить, что «не работает»?

+0

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

+0

Форма не загружается нормально Я думаю, или я не прав? из-за переменных страницы и cont, иначе, если я ошибаюсь, функция 'ButtonClicked' запускается или нет? я удивляюсь этому, чтобы увидеть, где ошибка. –

+0

Я использовал кнопки ButtonClicked() и run(), чтобы получить значение, выбранное в раскрывающемся списке, а затем основываясь на этом, обновляя «страницу» и «конец», сначала я думал об обновлении этих переменных в одном из этих методов функций , но страница визуализируется с начальными значениями этих глобальных переменных, поэтому таким образом не будет работать –

Смежные вопросы