Вопрос здесь очень простойКак получить доступ к модели в JQuery
Это мой взгляд
<%@ Control Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<GetmoreRevamp.BAL.Product>" %>
<link href="<%=Url.Content("~/Content/AddToCart.css")%>" rel="stylesheet"
type="text/css" />
<link href="<%=Url.Content("~/Scripts/jquery-1.4.1.js")%>" type="text/javascript" />
<script type="text/javascript">
function submitForm(formData) {
var tdata = $(formData).serialize();
$.ajax({
type: "POST",
url: '<%= Url.Action("AddToCart","Cart")%>',
data: tdata,
contentType: 'application/json; charset=utf-8',
datatype: "json",
success: function(result) { success(result); }
});
return false;
}
function success(result) {
alert("success:" + result.success);
}
</script>
<% using (Html.BeginForm("AddToCart", "Cart ", Model, FormMethod.Post,
new { onsubmit = "return submitForm('this');" })) {%>
<div class="prishosbtn">
<a rel="prettyPhoto" href="" id="buy">
<%Response.Write("<input type=\"image\" class=\"imgClass\" alt=\"" +
(Model != null && Model.ProductName != null ?
Model.ProductName : "KOEB") + "\" src=\"" +
Url.Content("~/pics/undersider/listevisning/kob-knap.png") +
"\" id=\"ImageButton\" name=\"ImageButton\" />");%>
</a>
</div>
<%}%>
Это мой контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using GetmoreRevamp.WEB.Models;
using GetmoreRevamp.WEB.Models.BLLModels;
using System.Web.Security;
using System.Security.Principal;
using GetmoreRevamp.WEB.Utilities;
using GetmoreRevamp.BAL;
namespace GetmoreRevamp.WEB.Controllers
{
public class CartController : Controller
{
//
// GET: /Cart/
public ActionResult Index()
{
return View("Cart");
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddToCart(Product product)
{
JsonResult result = new JsonResult();
OrderHeader orderHeader =
Session[Constants.CurrentlySessionOrderHeader] as OrderHeader;
if (orderHeader == null)
{
orderHeader = new OrderHeader();
}
if (product != null && product.ProductGuid != null &&
string.Equals(product.ProductGuid, string.Empty))
{
orderHeader.AddOrderLineItem(1, product);
orderHeader.Calculate();
Session[Constants.CurrentlySessionOrderHeader] = orderHeader;
//Default redirection Must be changed when actual view is created
result.Data = true;
}
else
{
//Default redirection Must be changed when actual view is created
result.Data = false;
}
return result;
}
}
}
«Продукт» определяется в БАЛ. Продукт содержит другие бизнес-единицы. То, что я просто хочу сделать, - это получить доступ к модели, с которой объект привязан в jquery, а затем отправить его в мой метод действий в контроллере корзины. Я не хочу публиковать идентификатор продукта. Я хочу опубликовать фактическую модель через jquery для моего метода действий. В этом я новичок. так что любая помощь и наиболее имп простое решение будет предпочтительнее
Брайан мой вопрос в том, что в jquery, как я могу получить фактический объект модели, с которым связано представление. Предположим, что существует строго типизированное представление a с классом модели b. теперь мы можем отображать или редактировать поля экземпляра b через элементы html в a. которая прямолинейна. Если метод действия d contoller c принимает b как параметр, мы можем отправить обратно/перенаправить/получить этот метод действия. Это легко. Мой сценарий - это бит расширения. Поскольку a отправляет экземпляр от b до d в качестве параметра, он означает, что он либо сохранил в нем экземпляр b, либо знает, как создать экземпляр b (cont) –
(Продолжая предыдущий) из доступной ему информации. То, что я хочу сделать, - это получить доступ к этому экземпляру b в jquery внутри сериализации, если это необходимо, а затем передать его через json в метод действия в любом контоллере, который принимает экземпляр b в качестве параметра. –
Я пытаюсь сказать, что процесс привязки модели не публикует объект при использовании какого-либо подхода. Он помещает поля объекта на сервер. На сервере процесс привязки модели использует отражение в соответствии с текстовым полем с именем ProductID с идентификатором продукта свойства объекта, хранящегося в ссылке на модель. MVC фактически имеет гибкую архитектуру привязки, так как она также может работать с вложенными объектами. У вас всегда есть возможность принять форму FormCollection в качестве параметра метода действия, а затем использовать TryUpdateModel для перемещения значений к объекту. –