私はViewModelを使用するフォームビューを持っています。新しいビューは、アクション "新規"でレンダリングされます。このフォームが提出されると、私は情報をアクション「追加」に送り返します。ASP.Net MVC returnリダイレクトアクションの代わりにモデルの新しいインスタンスでビューを返します
DB上のすべてのアクションが成功した場合は、ビューを更新します。 "Add"アクションの中からviewmodelの新しいインスタンスを作成し、View( "New"、viewModel)を返します。これは私の見方をリフレッシュしません。古い値(送信されたもの)はすべてビューに残ります。 RedirectToActionメソッドを使用せずにページを更新する方法はありますか?
私は、望ましくない結果をもたらす可能性があるため、ModelState.Clearは使用しないでください。それが満たされた値属性でレンダリングされた、またはブラウザがフォームを "オートフィル" されたコードを追加しました
New
public ActionResult New(string id)
{
var sysId= new Guid(id);
.......
........
string Details = pDto.Name + "(" + pDto.Code + ")";
var vm= new ViewModel(id);
vm.Details = Details;
return View(vm);
}
public ActionResult Add(ViewModel vm)
{
ViewModel vm= vm;
if (ModelState.IsValid)
{
var dto= _qRepository.GetFeaturesBy(viewModel.Code);
if (dto!= null)
{
ModelState.AddModelError("Code", "Code is already in Use.");
return View("New", viewModel);
}
_productService.AddFeature(..........);
// ModelState.Clear(); -- this works
vm= new ViewModel(vm.pId) { Message = "Code" + viewModel.Code + " was added ......", Details = vm.Details };
}
return View ("New", vm);
}
現在行っている作業のコードを投稿できますか? –
私はコードを投稿しました - – TheMar