2012-06-08 45 views
0

好吧,我是MVC的新手,我正在努力解决一个我无法找到答案的问题。将模型和其他参数传递给MVC中的控制器3

我想通过我的FormModel对象,也是一个rowId到我的控制器中使用jQuery的Action方法。 rowId如预期的那样通过,但FormModel要么以空值或者将所有属性设置为默认值。我相信这是与MVC 3绑定机制有关,但是对MVC来说是如此的新颖,我不能100%确定。

这里的操作方法非常简单版本:

[HttpPost] 
    public ActionResult RemoveProductMessage(FormModel form, int rowId) 
    { 
     try 
     { 
      if(Request.IsAjaxRequest()) 
      { 

      } 
     } 
     catch 
     { 
      return Redirect("~/DefaultExceptionPage.htm"); 
     } 

     return PartialView("_ProductMessage", form); 
    } 

,这里是我使用过尝试和值传递JavaScript的:

$(document).ready(
(function() { 
    $("#remove-product-message-row").live(
     "click", 
     function (rowId) { 
      var url = '/Forms/RemoveProductMessage'; 
      var x = $('#main-form').serialize(); 
      var dataToSend = { form: JSON.stringify(x), rowId: 1 }; 

      $.ajax({ 
       url: "/Forms/RemoveProductMessage", 
       type: 'POST', 
       data: $.toDictionary(dataToSend), 
       success: function (result) { 
        $("#all-product-messages").html(result); 
       } 
      }); // End of $.ajax call 
     }); 
})); 

我已经尝试了几乎不同的东西,我目前正在尝试在这里找到的jQuery插件(jquery.todictionary),但没有运气。我不打算使用这个插件和其他任何方式来获得这个东西,我愿意。

我已经尝试了很多关于$('#main-form')。serialize()的东西,但都无济于事。任何帮助将不胜感激。

谢谢。

编辑补充细节

好吧,我已经采取了在Firebug和POST看看另一个动作方法,只需要在FormModel作为PARAM看起来是这样的:

AdministrationFormNumber 5809 BflBaseFormModel.BaseForm ... 5809 BflBaseFormModel.BaseForm ...... 8/1/2010 12:00:00 AM BflBaseFormModel.BflFormB ... S_5809DYN_082010 BflBaseFormModel.BflFormB ... S_5809DYN_082010 BflBaseFormModel.BflFormB ... DYN BflBaseFormModel.BflFormB ...中介 BflBaseFormModel.BflFormB ... AS BflBaseFormModel.BflFormB ... GE BflBaseFormModel.BflFormB ... LM BflBaseFormModel.BflFormB ... OC BflBaseFormModel.BflFormB ...活跃 BflBaseFormModel .BflOblig ...
BflBaseFormModel.BondSubT ...
BflBaseFormModel.BondType ... 6 BflBaseFormModel.StateNam ...马萨诸塞 BflBaseFormModel.Title瞬变/巡回服务供应商 - MA CreatedDate 2012/3/15 2:39 :36 PM FormNumber 05809 Product.Attachments false Product.AvailableOnlin Ë Product.AvailableOnline Product.BondAmtMax 0.00 Product.BondAmtMin 0.00 Product.BondAmtStd
Product.BondEffectiveDate
Product.BondExpirationDat ...
Product.BondObligationDes ...
Product.BondTermMonths
Product.BondType
Product.CancelDays
Product.CategoryId 0 Product。ClassCode
Product.ContactEmail
Product.ContactName Product.ContactPhone
Product.ContactUrl
Product.CounterSignatures
Product.Description Product.EandOFlag假 Product.EarliestTermEffec ... 1/1/0001 12:00 :00 Product.EndorsementFileNa ...
Product.FormId 0 Product.FormTitle
Product.MinCreditScore 0 Product.ObligationType
Product.Obligee.ObligeeNa ...
Product.ProductLineId
Product.ProductVersionAva ... 1/1/0001 12:00:00 AM Product.ProductVersionExp ... 1/1/0001 12:00:00 AM Product.RateCode
Product.RateType Product.RenewalFileName Product.RenewalMethod
Product.RiskType
Product.SpecialInstructio ...
Product.State
QiFormModel.Attachmentň麻州的 QiFormModel.Description联合体 - 瞬时/流动卖方债券 QiFormModel.DigitalSignat ......假 QiFormModel.EffDateWrappe ......真 QiFormModel.FileName LMS_15809_082010.xdp QiFormModel.FormNumber LMS_15809/8/2010 行ID b6c0c011-6153-4391-be0d-7bb7c106372c StateOfEntity新增

然而,当我看POST用于RemoveProductMessage我看到以下内容:

形式AdministrationFormNumber = 5809 & FormNumber = 05809 &行ID = b6c0c011-6153-4391-be0d-7bb7c106372c & CreatedDate = 3%2F15%2F2012 + 2 %3A39%3A36 + PM & StateOfEntity =新增& BflBaseFormModel.Title =瞬态%2FItinerant +卖方+ - + MA & BflBaseFormModel.BaseFormID = 5809 & BflBaseFormModel.BaseFormRevisionDate = 8%2F1%2F2010 + 12%3A00%3A00 + AM & BflBaseFormModel.BondTypeId = 6 & BflBaseFormModel.BondSubTypeId = & BflBaseFormModel.StateName =马萨诸塞& BflBaseFormModel.BflObligeeName = & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.PostedCompanyModels = AS & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.PostedCompanyModels = GE & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.PostedCompanyModels = LM & BflBaseFormModel .BflFormByLibraryModels%5B0%5D.PostedCompanyModels = OC & BflBaseFor mModel.BflFormByLibraryModels%5B0%5D.LibraryName =代理& BflBaseFormModel.BflFormByLibraryModels%5B0%5D.FormFileType = DYN & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.FileName = S_5809DYN_082010 & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.StatusInLevel =活动& QiFormModel。 FormNumber = LMS_15809%2F + 8%+ 2F2010的麻省理工& QiFormModel.Description =联合体+ + - +瞬态%2FItinerant +卖方+邦德& QiFormModel.DigitalSignatureWrapped =假& QiFormModel.EffDateWrapped =真& QiFormModel.Attachment = N & QiFormModel.FileName = LMS_15809_082010.xdp & BflBaseFormModel.BflFormByLibraryModels%5B0%5D.FileName = S_5809DYN_082010 & Product。FormId = 0 & Product.FormTitle = & Product.AvailableOnline = & Product.EarliestTermEffectiveDate = 1%2F1%2F0001 + 12%3A00%3A00 + AM & Product.ProductVersionAvailabilityDate = 1%2F1%2F0001 + 12%3A00%3A00 + AM & Product.ProductVersionExpirationDate = 1%2F1%2F0001 + 12%3A00%3A00 + AM & Product.Attachments =假& Product.Description = & Product.RiskType = & Product.RateType =%EF%BF%BD & Product.EandOFlag =假& Product.BondEffectiveDate = & Product.BondExpirationDate = & Product.BondTermMonths = & Product.CancelDays = & Product.RenewalFileName = & Product.RenewalMethod = & Product.EndorsementFileName = & Product.BondAmtStd = & Product.BondAmtMin = 0.00 & Product.BondAmtMax = 0.00 & Product.MinCreditScore = 0 & Product.SpecialInstructions = & Product.State = & Product.ProductLineId = &产品.BondType = & Product.CategoryId = 0 & Product.AvailableOnline = & Product.ClassCode = & Product.RateCode = & Product.CounterSignatures = & Product.BondObligationDescription = & Product.ObligationType = & Product.ContactName = & Product.ContactPhone = & Product.ContactEmail = & Product.ContactUrl = & Product.ProductMessages%5B0%5D.MsgCode =%24个+++ & Product.ProductMessages%5B0%5D.MessageToAddress = 1235 & Product.ProductMessages%5B0% 5D.StateOfEntity =新增& Product.ProductMessages%5B0%5D.MessageRowID = cae73ecf-4bc9-45f2-bd5d-4040dc7362ef & Product.Obligee.ObligeeName =

看来,值不被正确的密钥集/价值配对。

模型对象:

public class FormModel : BaseModel 
{ 
    private ProductModel productModel; 

    public BflBaseFormModel BflBaseFormModel 
    { 
     get; 
     set; 
    } 

    public QiFormModel QiFormModel 
    { 
     get; 
     set; 
    } 

    [DisplayName("Form Number")] 
    public string FormNumber 
    { 
     get; 
     set; 
    } 

    public int AdministrationFormNumber 
    { 
     get; 
     set; 
    } 

    public System.Guid RowID 
    { 
     get; 
     set; 
    } 

    public System.DateTime CreatedDate 
    { 
     get; 
     set; 
    } 

    [AutoMapper.IgnoreMap] 
    public string Information 
    { 
     get; 
     set; 
    } 

    [AutoMapper.IgnoreMap] 
    public ProductModel Product 
    { 
     get 
     { 
      if (productModel == null) 
      { 
       productModel = new ProductModel(); 
      } 

      return productModel; 
     } 

     set 
     { 
      productModel = value; 
     } 
    } 

    public void SetFormModels() 
    { 
     // Map Companies to BflForms 
     foreach (var bflFormByLibraryModels in BflBaseFormModel.BflFormByLibraryModels) 
     { 
      if (bflFormByLibraryModels.BflFormModels != null) 
      { 
       bflFormByLibraryModels.BflFormModels.Clear(); 
      } 
      else 
      { 
       bflFormByLibraryModels.BflFormModels = new List<BflFormModel>(); 
      } 

      foreach (var selectedCompany in bflFormByLibraryModels.PostedCompanyModels) 
      { 
       var bflFormModel = new BflFormModel(); 
       bflFormModel.CompanyID = selectedCompany; 
       bflFormModel.BaseFormID = bflFormByLibraryModels.BaseFormID; 
       bflFormModel.BaseFormRevisionDate = bflFormByLibraryModels.BaseFormRevisionDate; 
       bflFormModel.LibraryID = bflFormByLibraryModels.LibraryID; 
       bflFormByLibraryModels.BflFormModels.Add(bflFormModel); 
      } 
     } 

     // Verify that QILatest has been set correctly 
     if (QiFormModel != null && QiFormModel.AdministrationFormNumber == null) 
     { 
      QiFormModel = null; 
     } 
    } 
} 

观是相当大的,由各种局部视图的,所以我不会张贴在这里。

好吧,我已经在这里做了一个不同的路径,并通过另一种方式获取数据,所以一切都很好。

回答

0

传递两个参数与字符串化方法,像这样

var dataToSend = { form: JSON.stringify(x), rowId: JSON.stringify(1) }; 
+0

添加的contentType导致以下异常:[ArgumentException的:无效JSON原始:形式] – MacNET

+0

确定,删除该内容类型和只添加将字符串化为第二个参数 – Jorge

+0

没有例外,但FormModel仍然以null结尾。 rowId虽然可以。 – MacNET

相关问题