2013-03-05 4 views
0

Я разработчик настольных компьютеров, и я преподаю себе ASP.NET MVC3 с C# (не могу использовать MVC4 еще ...). По этой причине я похлопываю по небольшим манекенам. В этом проекте я использую DropDownListFor с категориями фильмов (все мы знаем этот пример правильно?). Но потому, что этот урок прошел слишком быстро, я пытаюсь сделать что-то более простое.Render Partial View from JQuery

My Model:

public class MovieModel { 

    public int SelectedCategorieID { get; set; } 

    public List<CategorieModel> Categories { get; set; } 

    public MovieModel() { 
     this.SelectedCategorieID = 0; 
     this.Categories = new List<CategorieModel>() {new CategorieModel {ID = 1, 
      Name = "Drama"}, 
     new CategorieModel {ID = 2, 
      Name = "Scifi"}}; 
    } 
} 

public class CategorieModel { 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 

См? Очень просто. У меня сильно типизированных, в котором я могу использовать эту модель:

@model MvcDropDownList.Models.MovieModel (1st line of Index.cshtml). 

модель заполняется, когда действие по умолчанию Home контроллера называется:

public ActionResult Index() { 

     ViewBag.Message = "Welcome to ASP.NET MVC!"; 

     Models.MovieModel mm = new Models.MovieModel(); 

     return View(mm); 
    } 

До сих пор так хорошо. Нет проблем. Теперь я хочу показать пользователю идентификатор категории, которую он выбрал в частичном представлении с ненавязчивым ajax ... Потому что я не получил его на работу, я начал еще меньше. Забудьте о DrowpdownList пока. Все, что я на данный момент эта кнопка:

<input type="button" value="Minicart test" onclick="categoryChosen();" /> 

И это Див:

<div id="minicart"> 
    @Html.Partial("Information") 
</div> 

мини корзина материал из другого урока, я извиняюсь. Не позволяйте этому отвлекать вас, пожалуйста.

Это JavaScript:

function categoryChosen() { 
    var url = "Home/CategoryChosen/" + "2"; 
    $.post(url, function (data) { 
     debugger; 
     $("#miniCart").html(data); 
    }); 
} 

2-действительно твердый, с моей предыдущей попытки заставить его работать. В конце концов, я хочу, чтобы быть переменной ... конечно

Что вызывает это действие:

[AcceptVerbs("POST")] 
    public ActionResult CategoryChosen(string SelectedCategorieID) { 

     ViewBag.messageString = "2"; 

     return PartialView("Information"); 

    } 

Да, и вы видите, что правильно. Я просто вставляю 2 для своего теста. Потому что, как я уже сказал, не может заставить его работать. Частичный вид информации выглядит так:

@{ 
    ViewBag.Title = "Information"; 
} 

<h2>Information</h2> 
<h2>You selected: @ViewBag.messageString</h2> 

Итак, теперь для большого вопроса. Я ожидал, что частичное представление будет показано: «Вы выбрали: 2». Я даже вижу это, когда отлаживаю javascript и смотрю, что внутри переменной «данные». Может ли кто-нибудь помочь мне, почему он не отображает 2? Затем я могу продолжить обучение этому. Большое вам спасибо за помощь. Если вы пропустите какую-либо информацию, не стесняйтесь спрашивать.

+0

Я бы использовал интегрированную функциональность MVC-Ajax. Взгляните на Ajax.Beginform и ненавязчивый аякс. Мне нравится этот урок http://www.asp.net/mvc/tutorials/older-versions/javascript/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript –

+0

Спасибо за ссылку. –

ответ

1

Я думаю, что проблема опечатка идентификатор minicart дел. Ваш идентификатор не содержит заглавных букв, но ваш селектор делает. Поэтому вместо $ ("# miniCart") вы должны использовать $ ("# minicart"), и он будет работать.

+0

Я так смущен! Это был ответ, большое спасибо! Хорошо, если вы хотите легко кудо, продолжайте отвечать на мои вопросы. Потому что я такой новичок в webdevelopment .... –

0

Сделать это так и проверьте, работает ли он

function categoryChosen() { 
    var url = "Home/CategoryChosen?SelectedCategorieID=" + "2"; 
    $.post(url, function (data) { 
     debugger; 
     $("#miniCart").html(data); 
    }); 
} 

Это при условии, если учесть, что вы не сделали никаких изменений в маршрутизаторах в global.asax

, а вы должны добавить URL-адрес, как это

UrlHelper

+0

Спасибо, что ответили. Не ответ на мой вопрос. Я уже пытался объяснить, что я не пытался пропустить 2 в URL, а скорее в самом контроллере. Извините за путаницу. –