2013-03-05 163 views
0

我是一名桌面開發人員,我教自己的ASP.NET MVC3與C#(不能使用MVC4呢......)。出於這個原因,我正在將一些小型虛擬項目捆綁在一起。在這個項目中,我使用帶電影類別的DropDownListFor(我們都知道這個例子對嗎?)。但是因爲這個教程太快了,我正在嘗試做更簡單的事情。從JQuery渲染部分視圖

我的模型:

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). 

當主控制器的默認操作被稱爲模型填充:

public ActionResult Index() { 

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

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

     return View(mm); 
    } 

到目前爲止好。沒問題。現在我想用不顯眼的ajax向用戶顯示它在部分視圖中選擇的類別的ID ...因爲我沒有得到它的工作,我開始更小。暫時忘掉DrowpdownList。所有我目前所面對的是這樣的按鈕:

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

而且這個div:

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

迷你購物車的東西是從另一個教程,我道歉。不要讓它讓你分心。

這個JavaScript:

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

的2確實是堅實的,從我早期的嘗試得到它的工作。最後,我想這是ofcourse變量...

調用該動作:

[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時看到這一點,並查看變量「data」中的內容。任何人都可以幫助我,爲什麼它不呈現2?然後,我可以繼續自學這些東西。非常感謝您的幫助。如果你錯過了任何一種信息,請不要猶豫,問。

+0

我會使用集成的MVC-Ajax功能。看看Ajax.Beginform和不顯眼的ajax。我喜歡這個教程http://www.asp.net/mvc/tutorials/older-versions/javascript/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript – 2013-03-05 09:26:41

+0

謝謝你的鏈接。 – 2013-03-05 10:03:44

回答

1

我認爲這個問題是minicart DIV的拼寫錯誤ID。你的ID不包含任何大寫字母,但你的選擇器。因此,而不是$(「#miniCart」)你應該使用$(「#minicart」),它會起作用。

+0

我很尷尬!這是答案,非常感謝!那麼如果你想要簡單的工具,請繼續關注我的問題。因爲我在web開發中是一個初學者.... – 2013-03-05 10:07:40

0

使它像這一點,並檢查是否正常工作

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

這提供了考慮,你有沒有做過Global.asax中

,而你應該添加URL喜歡你的路由器的任何變化這

UrlHelper

+0

謝謝你的回答。不是我的問題的答案,但。我已經試着解釋,我沒有嘗試在URL中傳遞2,而是在控制器本身。對困惑感到抱歉。 – 2013-03-05 10:05:36