好吧,我是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;
}
}
}
观是相当大的,由各种局部视图的,所以我不会张贴在这里。
好吧,我已经在这里做了一个不同的路径,并通过另一种方式获取数据,所以一切都很好。
添加的contentType导致以下异常:[ArgumentException的:无效JSON原始:形式] – MacNET
确定,删除该内容类型和只添加将字符串化为第二个参数 – Jorge
没有例外,但FormModel仍然以null结尾。 rowId虽然可以。 – MacNET