내 뷰 중 하나 인 스코어링 컨트롤러의 인덱스 뷰에서 일부 이미지를 표시하고 javascript를 사용하여 클릭 할 수있게 만듭니다. 이미지를 클릭하면 배열을 채 웁니다. 사용자가 제출 단추를 클릭하면 배열이 스코어링 컨트롤러의 Score 메서드에 문자열로 전달됩니다. 이 방법으로 모든 데이터를 설정할 수 있으며 Chrome 디버거를 사용하여 네트워크 탭을 볼 때 새로운 '점수'보기가 렌더링되는 것처럼 보입니다.하지만 실제 브라우저를 보면 새로운 것은 표시되지 않습니다. 이전과 같은 이미지 목록이 계속 표시됩니다. 내 View가 제대로 렌더링되지 않는 이유는 무엇입니까?MVC4의 HttpPost 메서드가 올바른 뷰를 반환하지 않습니다.
채점/JS Index.cshtml
$(document).ready(function() {
$(function() {
$("img").click(function() {
// Add and remove border for image
if ($(this).hasClass('selectedCard')) {
$(this).removeClass('selectedCard');
for (var i = 0, len = cardIdList.length; i < len; i++) {
if (cardIdList[i] === $(this).attr('id')) {
cardIdList.splice(i, 1);
alert(cardIdList.toString());
break;
}
}
}
else
{
$(this).addClass('selectedCard');
var id = $(this).attr('id');
cardIdList = (typeof cardIdList != 'undefined' && cardIdList instanceof Array) ? cardIdList : [];
cardIdList.push(id);
alert(cardIdList.toString());
}
});
$(".button").on('click', function() {
$.post("@Url.Action("Score", "Scoring")", { CardIds: cardIdList.toString()});
});
});
});
ScoringController
public ActionResult Index()
{
var cards = cardDB.Cards.ToList();
return View(cards);
}
[HttpPost]
public ActionResult Score(string CardIds)
{
// splits up CardIds string into List
List<string> cardIdList = new List<string>();
cardIdList.AddRange(CardIds.Split(new char[] { ',' }));
CardDeck deckToScore = new CardDeck();
List<Card> cardsToAdd = new List<Card>();
for (int i = 0, len = cardIdList.Count(); i < len; i++)
{
var card = cardDB.Cards.Find(Convert.ToInt32(cardIdList[i]));
cardsToAdd.Add(card);
}
deckToScore.Deck = cardsToAdd;
return View(deckToScore);
}
}
Score.cshtml
{ ViewBag.Title = "점수"@@model GoStopPrimer.Models.CardDeck
; }
@for (int i = 0, len = @Model.Deck.Count; i < len; i++)
{
<img alt= @Model.Deck[i].Name, src= @Model.Deck[i].CardArtUrl id= @Model.Deck[i].CardId />
}
그것은 내가 포스트 방법으로 "보기"를 반환되었다 밝혀 ... 그리고 당신은 내가 그것으로 아무것도하지 않은, 맞아. 방금보기를 렌더링 할 것으로 예상 했었지만 대신 이전보기의 div에 대신 표시했습니다. 고맙습니다!! –