私はgetアクションが送信されdiferent形式でのDateTimeパラメータを読み込むしようとしている問題を持っているこの時点で問題ASP.NETカスタムモデル:日時
。
日時が送信されますが、この形式になっています。0:dd/MM/yyyy
ゲットアクションが期待する:0:MM/dd/yyyy
溶液(多分)
をGETアクションは、私は期待しているものを変更するにはカスタムモデルバインディングを使用します。
GETアクション
public async Task<IActionResult> Details(int? id, [ModelBinder(typeof(PModelBinder))]DateTime date)
ModelBinderクラス
が今ここに欠けているいくつかのことであり、私はそれを正しく完了させる方法がわからない:
public class PModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
string theDate = bindingContext.HttpContext.Request.QueryString["date"];
//What should I write inside the []?
//I've tried QueryString["date"] which is the name of the parameter but it says is wrong
DateTime dt = new DateTime();
bool success = DateTime.TryParse(date); //Should I apply ParseExact? How should I do it?
if (success)
{
return new //what should I be returning here? dt?
}
}
}
私はちょうど始まるので、上記のコードでコメントとしてマークされたいくつかの質問がありますカスタムモデルバインディングを理解する。誰も私にいくつかのアドバイスを与えることができると思う。
私はこの記事を以下のよ:
https://weblogs.asp.net/melvynharbour/mvc-modelbinder-and-localization
しかし、それは2008からです!、それはまさに私がGETアクション(diferent日付形式)を抱えている問題だから、それは有効なようですが
更新:aditional情報
パラメータ日付が次のように定義されます
date=10%2F11%2F2017%200%3A00%3A00
0123:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime FechaLInicioLiq { get; set; }
とそのアクションをGET呼び出すURLのビルドは、日付パラメータのこのような構造を持っています
アルベルトあなたがDateTimeのに必要な "0:MM/DD/YYYY" を "0:DD/MM/YYYY" .Am私は正しい... –
@VIGNESHARUNACHALAM datetimeは0:dd/MM/yyyyの形式で送信されますが、GETアクションはその形式が0:MM/dd/yyyyのようにパラメータを読み取ろうとしているため、エラーが発生します。だから、GETアクションが0:dd/MM/yyyy形式を受け入れ始める必要があります。 –
MVCのどのバージョンですか? –