これはなぜ動作しないのですか? 1つのページに複数の送信ボタンについての記事をたくさん読んだことがありますが、背景に何が起こっているのか分かりません。私は他の人がその記事でやっていることに従うように努力しましたが、どれもうまくいかないようです。私はここで本当に何が起こっているのか理解しようとしています。私は、ページが投稿されたときに何が起こるかと何か関係があると考えています。.NET MVC 3の送信ボタンが異なる動作をする
両方のボタンは全く異なるものです。 最初のボタンがフォームをポストします。フォームのポストコードでは、Vehicle/Indexにリダイレクトされます。 第2ボタンはフォームを投稿せず、/車両/ CreateNewVehiclePartに直接進みます。
これは私が欲しいものです。私は両方のボタンがフォームを提出するようにしたい(私は検証を実行し、移動する前に車両への変更を保存することができます)。車両データが保存されたら、どのボタンがクリックされたかに基づいて/Vehicle/AddPartsToVehicleまたは/Vehicle/CreateNewVehiclePartに移動します。ここで
<table class="layouttable">
<tr>
<td>
@using (Html.BeginForm("AddPartsToVehicle", "Vehicle", FormMethod.Post, null))
{
<input type="submit" value="Add Parts To Vehicle" />
}
</td>
<td>
@using (Html.BeginForm("CreateNewVehiclePart", "Vehicle", FormMethod.Post, null))
{
<input type="submit" value="Create New Vehicle Part" />
}
</td>
</tr>
</table>
車両モデルさ:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace ShopLog.Models
{
public class Vehicle
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid VehicleID { get; set; }
[Timestamp]
public Byte[] Timestamp { get; set; }
[Required]
[Display(Name = "Vehicle Name")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string VehicleName { get; set; }
[Display(Name = "Assigned To")]
[MaxLength(30, ErrorMessage= "The {0} must be no more than {2} characters long.")]
public string AssignedTo { get; set; }
[Display(Name = "ID Number")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string IDNumber { get; set; }
[Display(Name = "Active")]
public bool Active { get; set; }
[Display(Name = "Sign Out Vehicle")]
public bool SignOutVehicle { get; set; }
[Display(Name = "Have Title")]
public bool HaveTitle { get; set; }
[Display(Name = "Mileage or Hours")]
public int? MileageOrHours { get; set; }
[Display(Name = "Make")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string Make { get; set; }
[Display(Name = "Model")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string Model { get; set; }
[Display(Name = "Year")]
public int? Year { get; set; }
[Display(Name = "Engine")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string Engine { get; set; }
[Display(Name = "Transmission Gears")]
public int? TransmissionGears { get; set; }
[Display(Name = "VIN")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string VIN { get; set; }
[Display(Name = "Serial Number")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string SerialNumber { get; set; }
[Display(Name = "Color")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string Color { get; set; }
[Display(Name = "Air Filter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string AirFilter { get; set; }
[Display(Name = "Engine Oil Filter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string EngineOilFilter { get; set; }
[Display(Name = "Fuel Filter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string FuelFilter { get; set; }
[Display(Name = "Transmission Oil Filter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string TransmissionOilFilter { get; set; }
[Display(Name = "HydraulicOilFilter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string HydraulicOilFilter { get; set; }
[Display(Name = "Interior A/C Filter")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string InteriorACFilter { get; set; }
[Display(Name = "Differential Oil")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string DifferentialOil { get; set; }
[Display(Name = "Transmission Oil")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string TransmissionOil { get; set; }
[Display(Name = "Engine Oil")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string EngineOil { get; set; }
[Display(Name = "Tire Size")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string TireSize { get; set; }
[Display(Name = "Tire Pressure")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string TirePressure { get; set; }
[Display(Name = "Smog Due Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? SmogDue { get; set; }
[Display(Name = "Registration Due Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? RegistrationDue { get; set; }
[Display(Name = "Insurance Due Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? InsuranceDue { get; set; }
[Display(Name = "License Plate")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string LicensePlate { get; set; }
[Display(Name = "Owner")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string Owner { get; set; }
[Display(Name = "Previous Owner")]
[MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
public string PreviousOwner { get; set; }
[Display(Name = "Date Acquired")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? DateAcquired { get; set; }
[Display(Name = "Notes")]
[DataType(DataType.MultilineText)]
public string Notes { get; set; }
[Required(ErrorMessage="Vehicle Type is required.")]
public Guid VehicleTypeID { get; set; }
public Guid? TransmissionTypeID { get; set; }
//A vehicle can only have one VehicleType and one TransmissionType
[Display(Name = "Vehicle Type")]
public virtual VehicleType VehicleType { get; set; }
[Display(Name = "Transmission Type")]
public virtual TransmissionType TransmissionType { get; set; }
//A vehicle can have many Parts
[Display(Name = "Parts")]
public virtual ICollection<Part> Parts { get; set; }
//A vehicle can have many Warranties
[Display(Name = "Warranties")]
public virtual ICollection<Warranty> Warranties {get; set; }
}
}
ここでは、パートモデルです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace ShopLog.Models
{
public class Part
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid PartID { get; set; }
public string Name { get; set; }
public decimal Cost { get; set; }
[DataType(DataType.MultilineText)]
public string Notes { get; set; }
//A Part can belong to many Vehicles
public virtual ICollection<Vehicle> Vehicles { get; set; }
}
}
各ボタンに名前を付けてみてください。それは役に立ちますか?そうすれば、ボタンは別個のポストパラメーターでなければなりません – TGH
名前= "btn1"と名前= "btn2"など – TGH
投稿したコードを含むこのページでは、モデルをVehicleクラスにします。あれは正しいですか?そして、2つのフォームはそれぞれ既存のパーツタイプを車両に追加するか、まったく新しいパーツ定義を作成する必要がありますか? – McGarnagle