【发布时间】:2012-06-12 12:32:24
【问题描述】:
好的,我是 MVC 的新手,我正在解决一个我无法找到答案的问题。
我正在尝试使用 jQuery 将我的 FormModel 对象和 rowId 传递给我的控制器中的 Action 方法。 rowId 按预期出现,但 FormModel 要么作为 null 出现,要么将所有属性设置为默认值。
我相信这与 MVC 3 绑定机制有关,但是对于 MVC 来说太新我不能 100% 确定。
这是 Action 方法的一个非常简化的版本:
[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 作为参数的操作方法,如下所示:
管理表格编号 5809
BflBaseFormModel.BaseForm... 5809
BflBaseFormModel.BaseForm... 2010 年 8 月 1 日上午 12:00:00
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
创建日期 2012 年 3 月 15 日下午 2:39:36
表格编号 05809
Product.Attachments 错误
Product.AvailableOnline
Product.AvailableOnline
Product.BondAmtMax 0.00
Product.BondAmtMin 0.00
Product.BondAmtStd
Product.BondEffectiveDate
Product.BondExpirationDat...
Product.BondObligationDes...
Product.BondTermMonths
Product.BondType
Product.CancelDays
产品.CategoryId 0
Product.ClassCode
Product.ContactEmail
Product.ContactName
产品.联系电话
Product.ContactUrl
Product.CounterSignatures
产品描述
Product.EandOFlag false
Product.EarliestTermEffec... 1/1/0001 12:00:00 AM
Product.EndorsementFileNa...
产品.FormId 0
Product.FormTitle
Product.MinCreditScore 0
Product.ObligationType
Product.Obligee.ObligeeNa...
产品.ProductLineId
Product.ProductVersionAva... 1/1/0001 12:00:00 AM
Product.ProductVersionExp... 1/1/0001 12:00:00 AM
产品.RateCode
Product.RateType �
Product.RenewalFileName
Product.RenewalMethod
产品.风险类型
Product.SpecialInstructio...
产品.状态
QiFormModel.附件N
QiFormModel.Description 马萨诸塞州联邦 - 临时/流动供应商债券
QiFormModel.DigitalSignat...错误
QiFormModel.EffDateWrappe... True
QiFormModel.FileName LMS_15809_082010.xdp
QiFormModel.FormNumber LMS_15809/ 8/2010
行 ID b6c0c011-6153-4391-be0d-7bb7c106372c
已添加 StateOfEntity
但是,当我查看 RemoveProductMessage 的 POST 时,我看到以下内容:
形式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&BflBaseFormModel.BflFormByLibraryModels%5B0%5D.LibraryName =剂&BflBaseFormModel.BflFormByLibraryModels%5B0%5D.FormFileType = DYN&BflBaseFormModel.BflFormByLibraryModels%5B0%5D.FileName =S_5809DYN_082010&BflBaseFormModel.BflFormByLibraryModels%5B0%5D.StatusInLevel=Ac略去&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+ .ProductVersionExpirationDate=1%2F1%2F0001+12%3A00%3A00+AM&Product.Attachments=false&Product.Description=&Product.RiskType=&Product.RateType=%EF%BF%BD&Product.EandOFlag=false&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&Pr oduct.SpecialInstructions=&Product.State=&Product.ProductLineId=&Product.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;
}
}
}
View很大,由各种Partial View组成,这里就不贴了。
好的,我在这里走了一条不同的路,并通过另一种方式获取数据,所以一切都很好。
【问题讨论】:
标签: asp.net-mvc-3