내 질문에 내가 달성하고자하는 것은 간단한 입력 폼을 포함하는 대화 상자를 표시하는 것입니다 thisMVC 모달 아약스 양식
에 비슷한입니다. 기사의 수량과 마찬가지로 사용자가 제출을 클릭하면 전체 대화 상자가 닫히고 전체 페이지를 다시로드하지 않고 데이터를 제출해야합니다.
이 양식에 의해로드 된 부분보기입니다 :이 대화 JS입니다
는@model TRUNCATED.Models.AddToCartModel
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm("AddToCart", "Order", new AjaxOptions { // DO I NEED ANY? }))
{
<fieldset>
<legend>AddToCartModel</legend>
<img src="@Url.Action("GetImage", "File", new { ArticleId = Model.ArticleId })" title="Artikelbild" style="resize:both; width: 300px; height:200px;" />
<div class="editor-label">
@Html.LabelFor(model => model.ArticleId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ArticleId)
@Html.ValidationMessageFor(model => model.ArticleId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Quantity)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Quantity)
@Html.ValidationMessageFor(model => model.Quantity)
</div>
<p>
<input type="submit" value="Add to Cart" />
</p>
</fieldset>
}
:에서
@Html.ActionLink("Add to Cart", "AddToCart",
new { id =item.ArticleId},
new { @class = "showDialog" }
:
$("#dialog").dialog({
autoOpen: false,
resizeable: false,
width: 350,
height: 600,
modal: true,
show: {
effect: "blind",
duration: 300
},
hide: {
effect: "blind",
duration: 300
},
buttons: {
"Close": function() {
$(this).dialog("close");
}
}
});
$(".showDialog").on("click", function (e) {
$('#dialog').load(this.href).dialog('open');
return false;
});
이 내가 대화 상자를 열 방법입니다 컨트롤러 :
[HttpGet]
public ActionResult AddToCart(int id)
{
return PartialView("_AddToCart", new AddToCartModel() { ArticleId = id });
}
[HttpPost]
public ActionResult AddToCart(AddToCartModel atm)
{
if (OrderData.CartItems.Count > 0)
atm.Pos = OrderData.CartItems.Max(i => i.Pos) + 1;
else
atm.Pos = 1;
OrderData.CartItems.Add(atm);
return // What goes here?
}
Im 이것에 새로운 것이고 나는 여기에서 잘못하고있는 어떤 단서도 가지고 있지 않습니다. 나는 HML을 대체했습니다. 아약스와 그러나 이것은 아무것도 바뀌지 않았다.
그래도 작동하지만 전체 페이지를 다시로드합니다. 웹 페이지가 뒤로 물결을 일으키는 것과 같은 부작용이 있습니다.
데이터가 targetID div에로드되지 않는다는 의미의 "ITEM ADDED TO CART"라는 메시지가 나타납니다. – CSharpie
아약스가 아닙니다. Ajax 양식을 사용하고 있습니까? 이 페이지에 추가 된 모든 스크립트는 페이지에 있습니까? – maxs87
페이지에 jquery.unobtrusive-ajax.min.js 참조가 필요합니다. – maxs87