gpt4 book ai didi

c# - POST 上的模型为空

转载 作者:行者123 更新时间:2023-11-30 22:53:31 24 4
gpt4 key购买 nike

我正在从事一个由一些我实际上并不认识的人开发的项目。我在 POST 方法上遇到了问题。该模型实际上是空的。看起来模型没有填充在 View 上。

public ActionResult ConfermaRistampa(int IDTitolo, Ristampa ristampa) //Ristampa is the model
{
//some code
if (ristampa.RichiestaRistampaWeb != null) //the field "RichiestaRistampaWeb" is null
{
ristampa.RichiestaRistampa = Utilities.ConverteFileInToFileUploadInfo(ristampa.RichiestaRistampaWeb, TipiDocumenti.Documento_Generico);
}
}

//this is the code of field on the Ristampa class declaration, in the set i noticed that value is null
public System.Web.HttpPostedFileBase RichiestaRistampaWeb
{
get
{
return this.RichiestaRistampaWebField;
}
set
{
if ((object.ReferenceEquals(this.RichiestaRistampaWebField, value) != true))
{
this.RichiestaRistampaWebField = value;
this.RaisePropertyChanged("RichiestaRistampaWeb");
}
}
}

这就是整个模型定义。显然是使用 MVC 的 ASP.NET Core。我注意到模型的大多数属性在 setter 上都是空值。

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name = "Ristampa", Namespace = "http://schemas.datacontract.org/2004/07/RSM.SourceData.Models.Serialized")]
[System.SerializableAttribute()]
public partial class Ristampa : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
{

[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private string ComuneLicenzaField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private string DenominazioneField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private decimal ImportoOperazioneField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo LibrettoDiCircolazioneField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Web.HttpPostedFileBase LibrettoDiCircolazioneWebField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo LicenzaField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Web.HttpPostedFileBase LicenzaWebField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private string MotivazioneField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private string NumeroLicenzaField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo RicevutaPagamentoField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Web.HttpPostedFileBase RicevutaPagamentoWebField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo RichiestaRistampaField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Web.HttpPostedFileBase RichiestaRistampaWebField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private System.Nullable<System.DateTime> ScadenzaLicenzaField;

[System.Runtime.Serialization.OptionalFieldAttribute()]
private string TargaAttualeField;

[global::System.ComponentModel.BrowsableAttribute(false)]
public System.Runtime.Serialization.ExtensionDataObject ExtensionData
{
get
{
return this.extensionDataField;
}
set
{
this.extensionDataField = value;
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public string ComuneLicenza
{
get
{
return this.ComuneLicenzaField;
}
set
{
if ((object.ReferenceEquals(this.ComuneLicenzaField, value) != true))
{
this.ComuneLicenzaField = value;
this.RaisePropertyChanged("ComuneLicenza");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public string Denominazione
{
get
{
return this.DenominazioneField;
}
set
{
if ((object.ReferenceEquals(this.DenominazioneField, value) != true))
{
this.DenominazioneField = value;
this.RaisePropertyChanged("Denominazione");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public decimal ImportoOperazione
{
get
{
return this.ImportoOperazioneField;
}
set
{
if ((this.ImportoOperazioneField.Equals(value) != true))
{
this.ImportoOperazioneField = value;
this.RaisePropertyChanged("ImportoOperazione");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo LibrettoDiCircolazione
{
get
{
return this.LibrettoDiCircolazioneField;
}
set
{
if ((object.ReferenceEquals(this.LibrettoDiCircolazioneField, value) != true))
{
this.LibrettoDiCircolazioneField = value;
this.RaisePropertyChanged("LibrettoDiCircolazione");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public System.Web.HttpPostedFileBase LibrettoDiCircolazioneWeb
{
get
{
return this.LibrettoDiCircolazioneWebField;
}
set
{
if ((object.ReferenceEquals(this.LibrettoDiCircolazioneWebField, value) != true))
{
this.LibrettoDiCircolazioneWebField = value;
this.RaisePropertyChanged("LibrettoDiCircolazioneWeb");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo Licenza
{
get
{
return this.LicenzaField;
}
set
{
if ((object.ReferenceEquals(this.LicenzaField, value) != true))
{
this.LicenzaField = value;
this.RaisePropertyChanged("Licenza");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public System.Web.HttpPostedFileBase LicenzaWeb
{
get
{
return this.LicenzaWebField;
}
set
{
if ((object.ReferenceEquals(this.LicenzaWebField, value) != true))
{
this.LicenzaWebField = value;
this.RaisePropertyChanged("LicenzaWeb");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public string Motivazione
{
get
{
return this.MotivazioneField;
}
set
{
if ((object.ReferenceEquals(this.MotivazioneField, value) != true))
{
this.MotivazioneField = value;
this.RaisePropertyChanged("Motivazione");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public string NumeroLicenza
{
get
{
return this.NumeroLicenzaField;
}
set
{
if ((object.ReferenceEquals(this.NumeroLicenzaField, value) != true))
{
this.NumeroLicenzaField = value;
this.RaisePropertyChanged("NumeroLicenza");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo RicevutaPagamento
{
get
{
return this.RicevutaPagamentoField;
}
set
{
if ((object.ReferenceEquals(this.RicevutaPagamentoField, value) != true))
{
this.RicevutaPagamentoField = value;
this.RaisePropertyChanged("RicevutaPagamento");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public System.Web.HttpPostedFileBase RicevutaPagamentoWeb
{
get
{
return this.RicevutaPagamentoWebField;
}
set
{
if ((object.ReferenceEquals(this.RicevutaPagamentoWebField, value) != true))
{
this.RicevutaPagamentoWebField = value;
this.RaisePropertyChanged("RicevutaPagamentoWeb");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public RSM.BusTuristiciWeb.SourceDataReference.FileUploadInfo RichiestaRistampa
{
get
{
return this.RichiestaRistampaField;
}
set
{
if ((object.ReferenceEquals(this.RichiestaRistampaField, value) != true))
{
this.RichiestaRistampaField = value;
this.RaisePropertyChanged("RichiestaRistampa");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public System.Web.HttpPostedFileBase RichiestaRistampaWeb
{
get
{
return this.RichiestaRistampaWebField;
}
set
{
if ((object.ReferenceEquals(this.RichiestaRistampaWebField, value) != true))
{
this.RichiestaRistampaWebField = value;
this.RaisePropertyChanged("RichiestaRistampaWeb");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public System.Nullable<System.DateTime> ScadenzaLicenza
{
get
{
return this.ScadenzaLicenzaField;
}
set
{
if ((this.ScadenzaLicenzaField.Equals(value) != true))
{
this.ScadenzaLicenzaField = value;
this.RaisePropertyChanged("ScadenzaLicenza");
}
}
}

[System.Runtime.Serialization.DataMemberAttribute()]
public string TargaAttuale
{
get
{
return this.TargaAttualeField;
}
set
{
if ((object.ReferenceEquals(this.TargaAttualeField, value) != true))
{
this.TargaAttualeField = value;
this.RaisePropertyChanged("TargaAttuale");
}
}
}

public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

protected void RaisePropertyChanged(string propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}

就是这样的形式:

@using (Html.BeginForm("ConfermaRistampa", "Abbonamenti", new { @IDTitolo = Request.QueryString["IDTitolo"] }, FormMethod.Post, null))
{
<br />
<table class="table table-bordered table-striped">
<thead>
<tr class="color">
<th>
@Html.Label(Risorse.Language.TargaAttuale)
</th>
<th>
@Html.Label(Risorse.Language.Motivazione)
</th>
<th>
@Html.Label(Risorse.Language.Importo)
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@Html.DisplayFor(model => model.TargaAttuale)

</td>
<td>
@Html.DropDownListFor(model => model.Motivazione, new SelectList(motivazioni, "Key", "Value"), "[Scegli una motivazione]", new { id = "ddlMotivazione", onchange = "SetPanelMotivazione();", required = "required" })

</td>
<td>
@Html.DisplayFor(model => model.ImportoOperazione)
</td>
</tr>
</tbody>
</table>




<div class="row">
<div class="col-sm-2">
</div>
<div class="col-sm-3">
</div>
</div>
<div class="row">
<div class="col-sm-6">
@Html.Label(Risorse.Language.DichiarazioneRichiestaRistampa + ":")
@Html.TextBoxFor(model => model.RichiestaRistampaWeb, new { type = "file", required = "required" })
</div>
@*<div class="col-sm-6">
@Html.Label(Risorse.Language.LibrettoDiCircolazione + ":")
@Html.TextBoxFor(model => model.LibrettoDiCircolazioneWeb, new { type = "file", required = "required" })
</div>*@
</div>
<br />
<div id="pnlLicense" style="display:none">
<div class="row">
<div class="col-sm-3">
@Html.Label(Risorse.Language.NumeroLicenza)
@Html.TextBoxFor(model => model.NumeroLicenza)
@Html.ValidationMessage("errNumLicenza", new { @class = "text-danger" })
</div>
<div class="col-sm-3">
@Html.Label(Risorse.Language.Provincia)
@Html.DropDownList("ddlProvince", new SelectList(listaProvince, "Key", "Value"), "Seleziona la provincia", new { @id = "ddlProvince", @onchange = "javascript:GetComuni(this.value, '#ddlComuni');" })
@Html.ValidationMessage("errProvince", new { @class = "text-danger" })
</div>
<div class="col-sm-3">
@Html.Label(Risorse.Language.Comune)
@Html.DropDownListFor(model => model.ComuneLicenza, new SelectList(new List<string>()), new { id = "ddlComuni" })
@Html.ValidationMessage("errComune", new { @class = "text-danger" })
</div>
<div class="col-sm-3">
@Html.Label(Risorse.Language.ScadenzaLicenza)
@Html.TextBoxFor(model => model.ScadenzaLicenza, new { type = "text", @language = "it", @class = "datepicker-here" })
</div>
</div>
<br />
<div class="row">
<div class="col-sm-6">
@Html.Label(Risorse.Language.DocumentazioneNuovaLicenza + ":")
@Html.TextBoxFor(model => model.LicenzaWeb, new { type = "file" })
</div>
@*<div class="col-sm-6">
@Html.Label(Risorse.Language.RicevutaAvvenutaPagamento + ":")
@Html.TextBoxFor(model => model.RicevutaPagamentoWeb, new { type = "file" })
</div>*@
</div>
</div>

<div id="pnlRagSoc" style="display:none">
<h4 class="colorH4">
@Html.Label(Risorse.Language.DatiNuovoIntestatario)
</h4>

<div class="row">
<div class="col-sm-4">
@Html.Label(Risorse.Language.Denominazione)
@Html.TextBoxFor(model => model.Denominazione)
@Html.ValidationMessage("errDenominazione", new { @class = "text-danger" })
</div>
</div>
</div>
<br />
<div class="row">
<div class="col-sm-8"></div>
<div class="col-sm-4">
<input type="submit" value="@Risorse.Language.Invia" class="btnRegister btn btn-default" />
<input type="button" value="@Risorse.Language.Annulla" onclick="Annulla();" class="btnRegister btn btn-default" />
</div>
</div>
}

最佳答案

在您的 cshtml 表单中,将 enctype 设置为“multipart/form-data”。否则文件将不会包含在您的模型中:

// Magic all the way to the right -->
@using (Html.BeginForm("ConfermaRistampa", "Abbonamenti", new { @IDTitolo = Request.QueryString["IDTitolo"] }, FormMethod.Post, new { enctype="multipart/form-data" }))

关于c# - POST 上的模型为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com