(MVC2付き)ASP.NETを使用して、コントローラに$アヤックスを介した構造体のパラメータを渡すことはできません:は、私はこのようなモデルクラスを持っている
namespace Models
{
public struct Localization
{
public int Id;
public string LanguageName;
public string LanguageCode;
public DateTime LastUpdate;
}
public class LocalizationModel
{
private List<Localization> _localization;
public LocalizationModel() {
Browse();
}
//create simple list
public void Browse() {
Localization lang = new Localization();
_localization = new List<Localization>();
for (int i = 1; i <= 3; i++) {
lang.Id = i;
lang.LanguageName = "Language name " + i;
lang.LanguageCode = "Language code " + i;
lang.LastUpdate = DateTime.Now;
_localization.Add(lang);
}
}
public bool AddNewLanguage(Localization item) {
if ((item as object) == null) {
throw new ArgumentException("The localization cannot be empty");
}
_localization.Add(item);
return true;
}
public List<Localization> LocalizationList {
get {
return _localization;
}
}
}
}
、ホームコントローラで定義されて追加方法:
[HttpPost]
public ActionResult Add(Localization sendInfo) {
bool success = _localization.AddNewLanguage(sendInfo);
return this.Json(new {
msg = success
});
}
私はこのようなjqueryのAjaxの機能から、そのメソッドを呼び出した:
function sendDataForAdd() {
var sendInfo = { Id: 0,
LanguageName: $("#lang-name").val(),
LanguageCode: $("#lang-code").val(),
LastUpdate: $("#lang-update").val()
};
$.post('/Home/Add', sendInfo, doneLanguageAdded, 'json');
function doneLanguageAdded(msg) {
if (msg) {
alert("The language was added successfully !");
window.location.refresh(true);
}
else {
alert("The language was not added in list !");
}
}
}
コントローラからののファンクションパラメータAdd
がnullになるという問題があります。 javascript変数は入力値を正しく受け取ります。 問題はstruct
のモデルか何ですか?
他のシナリオを試しました。私はすべてのプロパティを持つクラスを定義し、それをLocalizationModel
クラスで使用します。これはjquery ajaxで完全に動作し、コントローラの関数に正しいパラメータを渡します。
struct
を使用すると、コントローラのパラメータがnullになるのはなぜですか?トリックがありますか?
(Visual Studioを使用して)コントローラ関数にブレークポイントを設定し、パラメータをチェックしました。
Idおよびその他の変数はnullです。私は写真を添付:
は
私のスクリプトが動作しない理由です...ありがとう:)神はあなたを祝福し、あなたのトラヴィスありがとう:D –
それはすでにマークされている:) –