【问题标题】:ASP.NET MVC5 : How do I pass data to a view?ASP.NET MVC5:如何将数据传递给视图?
【发布时间】:2014-05-22 10:04:10
【问题描述】:

我对此操作有疑问:

“activateOffreLocation”检查“Publication_Statut”的值并更改它(如果等于“Activée”,则操作将其更改为“Désactivée”,反之亦然

我没有收到任何错误!询问确认后,它会简单地切换到“listOffreLocation”视图!

我尝试使用断点跟踪执行,结果发现在我的 Post Action 中“offreLocation”为空,而 ID 不是,它包含第一个视图中所选项目的正确值。

         // GET: /OffreLocation/Activate
    public ActionResult ActivateOffreLocation(int id)
    {
        return View(db.PublicationSet.Find(id));
    }


    // POST: /OffreLocation/Activate
    [HttpPost]
    public ActionResult ActivateOffreLocation(int id, OffreLocation offreLocation)
    {
        try {
            var statut = offreLocation.Publication_Statut;

               if(String.Equals(statut,"Activée"))
                        {
                            offreLocation.Publication_Statut = "Désactivée";
                            db.SaveChanges();
                            return View();
                        }
            else 
                        {
                            offreLocation.Publication_Statut = "Activée";
                            db.SaveChanges();              
                            return RedirectToAction("ListOffreLocation"); 
                        }              
             } 
        catch (Exception exp)
        {
            Console.WriteLine("IOException source: {0}", exp.Source);
            return RedirectToAction("Error"); 
        }                      
    }

在我看来“listOffreLocation”我刚刚定义了指向“activateOffreLocation”视图的链接:

@Html.ActionLink("Désactiver", "ActivateOffreLocation", new { id = item.Publication_ID }) | 

“ActivateOffreLocation”视图:

<fieldset style="border:dashed; margin-top:80px">
<h3 style="text-align: center; margin-left:80px; margin-top:80px">  Voullez vous vraiment désactiver cette offre de location?   
</h3>
<h4 style="text-align:center">  Num:    @Html.EditorFor(model => model.Publication_ID) </h4>
<h4 style="text-align:center">  Statut    @Html.EditorFor(model => model.Publication_Statut) </h4>
    <div style="margin-bottom:80px">

        <hr />


        @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            @Html.HiddenFor(model =>model.Publication_ID) 
            <div class="form-actions no-color" style="text-align:center">
                @Html.HiddenFor(model => model.Publication_ID)
                <input type="submit" value="Désactiver" class="btn btn-default" /> |
                @Html.ActionLink("Retour à la  Liste", "ListOffreLocation")

            </div>
        }
    </div>
 </fieldset>

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-5 razorengine


    【解决方案1】:

    首先,您没有表明您正在将任何模型传递给您的视图“ActivateOffreLocation”。您似乎也没有发送任何模型数据,您的模型是“OffreLocation”到您的操作。这可能是你的问题。

    如果你解决了这个问题,但它不能解决你的问题,请发布更多代码,我会更新我的答案。

    【讨论】:

    • 是的,我在“ActivateOffreLocation”视图中使用我的模型,如下所示:@model COM.MENNILIK.Models.OffreLocation
    • 我做了什么,我尝试使用 get 方法在激活视图中显示出版物的状态和 ID,它有效。但是一旦我单击提交按钮,它就会丢失对象,因此我无法更改数据库中的任何内容(发布操作无法获取对象),所以我想知道如何将这个对象从我的激活视图传递到发布激活操作(语法)
    • 您正在尝试从您的提交按钮传递一个值;我建议改用隐藏输入。要从提交按钮传递值,请阅读此stackoverflow.com/questions/1714028/…
    • 我使用了 hidenInput,我还尝试了链接中描述的程序!在发布操作中仍然得到一个空对象:public ActionResult ActivateOffreLocation(int id, OffreLocation offreLocation)
    • 您的整个 offreLocation 对象是 null 还是只是那个属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多