English 中文(简体)
从视图传输数据到 asp.net mvc 3 上的控制器
原标题:passing data from view to controller on asp.net mvc 3

我无法将数据从视线传送到控制器, 我可以看到, 在我的第一个视图模型“TimeLineModel” 中, 我的视图模型从对控制器的动作转到了这个视图中。

public ActionResult confirmation(long socialbuzzCompaignId)
    {

      return View(new TimeLineModel() { socialBuzzCompaignId = socialbuzzCompaignId, BuzzMessages = model });

    }

这样我就能从我的动作中得到信息, 并在视图上显示它, 但我有其他动作 POST, 我无法得到我的视觉模型来做一些特质 。

    [HttpPost]
    public ActionResult confirmation(TimeLineModel model)
    {


    } 

i can get some propretie of the model but in others no , for example i can get the properti "socialBuzzCompaignId" of model , but other propertie like "IEnumerable BuzzMessages" i can t get it , i dont now why !! this is the content of my view

    @model Maya.Web.Models.TimeLineModel   
  @{
       ViewBag.Title = "confirmation";
    }
  @using (Html.BeginForm())
   {
     <h2>confirmation</h2>
       <fieldset>                       
          @foreach (var msg in Model.BuzzMessages)
          {                      
            <div class="editor-label">
              @msg.LongMessage
           </div>
           <br />
      }


    <p>
        <input type="submit" value="Save" />
    </p>

  </fieldset>

}
最佳回答

您需要将 BuzzMessages 属性包含在窗体元素中。 由于它不可编辑, 您可能想要使用隐藏。 这样做有两种方法。 最容易的方式不是做一个 < code> foreach 环, 而是做一个 < code> for 环, 然后用索引插入它们 。

@for (int i =0; i<Model.BuzzMessages.Count(); i++v)
{                      
    <div class="editor-label">
          @Model.BuzzMessages[i].LongMessage
          @Html.HiddenFor(m => m.BuzzMessages[i].LongMessage);
    </div>
       <br />
}

要做到这一点, 您需要使用 IList 而不是您所看的能按索引访问的 IEVI 模型 。

或者,您可以创建一个以您的 BazMessages 类命名的编辑模板(无论其名称为何 ) 。

@model BuzzMessagesClass

@Html.HiddenFor(m => m.LongMessages)
<!-- Include other properties here if any -->

然后在您主页中

@Html.EditorFor(m => m.BuzzMessages)

查看 < a href=> "http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/" rel="no follow" > http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/ 或搜索堆叠溢出,如果编辑模板的细节让你困惑的话。

问题回答

就像任何 HTML POST 方法一样, 您必须以某种方式将数据反馈给控制器。 只要“ 显示” 页面上的数据就不会重新组合它 。

您必须将数据输入到相应的模型属性名称中( 或将回放到后面的控件 ) 。

所以,如果您有一个名为 FirstName 的模型属性, 并且您想要将此数据反射到 POST 上的模型, 您就必须将“ 输入隐藏” (或类似的后退控制) 与 FirstName 的 ID 重新组合到 POST 上的模型 。

希望这解释得通

@foreach (var msg in Model.BuzzMessages)
{                      
    <div class="editor-label">
        @msg.LongMessage
        <input type="hidden" name="BuzzMessages.LongMessage" value="@msg.LongMessage" />
    </div>
}

它会张贴长征的阵列。 获取像这样的值 :

[HttpPost]
public ActionResult confirmation(TimeLineModel model, FormCollection collection)
{
    var longMessages = collection["BuzzMessages.LongMessage"];
}




相关问题
uninitialized constant

I m trying to do this tutorial-> http://netbeans.org/kb/docs/ruby/rapid-ruby-weblog.html BUT its giving me this error: NameError in PostsController#index uninitialized constant PostsController::...

Rails - Too much logic in views?

I have an application used by several organizations and I want to check that users of one domain (a.domain.com) cannot edit users of another domain (b.domain.com). My question is where to put the ...

Controller specs in isolation mode and render :update

I am using RSpec for writing my controller tests/specs. I faced the problem, that the following code gets rendered: render :update do |page| page[ middle_content ].replace_html :partial => "...

registering event listeners in a controller

I m working on creating a simple MCV application, in order to understand MVC better. The problem I m having is registering event listeners. The way I see MVC is that the view dispatches events, the ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

热门标签