【问题标题】:MVC3,PartialViews,Ajax Passing valuesMVC3,PartialViews,Ajax 传值
【发布时间】:2012-07-12 09:15:07
【问题描述】:

这是型号example.cs

namespace View_Partial_Editor.Models
{
    public class ExampleView
    {
            ...
            public string Field1 { get; set; }
            public string Field2 { get; set; }           
            public string Field3 { get; set; }
            public string Field4 { get; set; }
            public string Field5 { get; set; }
            ...

    }
}

我有这个观点example.cshtml:

@model View_Partial_Editor.Models.ExampleView

@{Html.RenderPartial("EditExample",Model);}    

@Html.TextBoxFor(m => m.Field1)

然后我有这个 partialView EditExample.cshtml:

@model View_Partial_Editor.Models.ExampleView    

@Html.HiddenFor(m => m.Field1)        

@using (Ajax.BeginForm("EditExample", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "partial" }))
{
   <div>
      @Html.EditorFor(m => m, "Editor", null)
   </div>

   <p>
      <input  id="buttona" type="submit" value="Save" /> 
   </p>        
}

我有这个控制器ExampleController:

namespace View_Partial_Editor.Controllers
{
    public class ExampleController : Controller
    {
        //
        // GET: /Example/    
        public ActionResult Example()
        {
            return View();
        } 

        [HttpPost]
        public ActionResult EditExample(ExampleView example)
        {
            example.Field1 ="7";

            return View("Example", example);
        }    
    }
}

这是在部分editor.cshtml中调用的编辑器

@model View_Partial_Editor.Models.ExampleView

<div class="editor-label">
    @Html.LabelFor(m => m.Field1 )
</div>
<div class="editor-field">
    @Html.EditorFor(m => m.Field1)
    @Html.ValidationMessageFor(m => m.Field1)
</div>
<div class="editor-label">
    @Html.LabelFor(m => m.Field2)
</div>
<div class="editor-field">
    @Html.EditorFor(m => m.Field2)
    @Html.ValidationMessageFor(m => m.Field2)
</div>

我的问题是我想在ajax调用中修改控制器中模型的数据,并将修改后的模型返回到exampleView。但是当ajax调用完成时,我在控制器中更改的值是模型中没有改变

编辑:我想要的是将调用发送到 ajax 方法,在数据库中保存一些内容,然后修改模型,在示例视图中我希望该模型具有更改。

此时,如果我将部分视图替换为 ajax 的结果,则示例视图中的模型不会被修改。另一种方法是替换完整示例视图,因此模型会在那里接收,但我有使用 Html.HiddenFor 传递大量字段,可以在不替换视图的情况下实现这一点,只返回具有更改的模型

【问题讨论】:

  • 请在 ajax 调用中显示控制器代码
  • ajax调用的代码是有EditExample函数的想法是示例模型,在调用后的exampleview中,field1ahnge的值为7,但具有旧值还是

标签: c# ajax asp.net-mvc-3 partial-views


【解决方案1】:

尝试在您的 HttpPost 操作方法中调用 ModelState.Clear()。 Html 助手首先使用 ModelState 中的值,然后是 Model。因此,如果您在帖子中更改模型中的值,则需要从 ModelState 中清除该值。

【讨论】:

  • 不使用 ajax 可以解决问题,但我必须使用 ajax 进行调用,所以无论如何都不能解决问题
猜你喜欢
  • 2011-06-20
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
相关资源
最近更新 更多