0

我是 mvc 的新手。我只有一个小表单,我希望当我提交表单时,部分视图将呈现在我放置表单的同一位置。

在这里,我给出了我们页面外观的屏幕截图。 在此处输入图像描述

当我渲染部分视图时,页面看起来不见了,像赤身裸体一样显示出来。这是屏幕截图。 在此处输入图像描述

我想successfully save在我放置表格的同一个地方显示消息。

这是我的完整代码。

我的控制器代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcPractise.Controllers
{
    public class GameController : Controller
    {
        //
        // GET: /Game/

        public ActionResult Test()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Save(string name, string salary, string btnSubmit)
        {
            //return View("Message");
            return PartialView("MyMessage");
        }

        public ActionResult Index()
        {
            return View();
        }
    }
}

我的主视图表单,其中有表单数据

@{
    ViewBag.Title = "Test";
}

<h2>Hello222</h2>

<div id="mydiv">
@using (Html.BeginForm("Save", "Game", FormMethod.Post, new { @Id = "Form1" }))
{
    <table border="0">
    <tr>
        <td>Name :</td>
        <td><input name="name" type="text" /></td>
    </tr>

     <tr>
        <td>Salary :</td>
        <td><input name="salary"  type="text" /></td>
    </tr>
    <tr>
        <td colspan="2"><input name="btnSubmit" type="submit" value="Save"/></td>
    </tr>
    </table>
}
</div>

在我的偏爱中,我只有这个文本

<h2>Successfully Saved</h2>

显示只是指导我在不使用 jquery 的情况下需要做什么。谢谢

4

1 回答 1

1

您应该使用 ViewBag 或 ViewData,然后如果您成功保存数据,您可以返回与消息相同的视图。

控制器

[HttpPost]
public ActionResult Save(string name, string salary, string btnSubmit)
{
  if(/*check if has success*/)
     ViewBag.Success = true;
  /*do another stuff*/
  return View("View where form data is there");
}

表单视图:

@{
    ViewBag.Title = "Test";
}

<h2>Hello222</h2>

      @if(ViewBag.Success != null && ViewBag.Success == true) //Show the message
      {
         <h2>Successfully Saved</h2>
      }

<div id="mydiv">
@using (Html.BeginForm("Save", "Game", FormMethod.Post, new { @Id = "Form1" }))
{
    <table border="0">
    <tr>
        <td>Name :</td>
        <td><input name="name" type="text" /></td>
    </tr>

     <tr>
        <td>Salary :</td>
        <td><input name="salary"  type="text" /></td>
    </tr>
    <tr>
        <td colspan="2"><input name="btnSubmit" type="submit" value="Save"/></td>
    </tr>
    </table>
}
</div>

编辑:

使用 Partial View 您可以获得相同的行为,但将 PartialView 直接呈现到页面中,而不是从控制器返回。PartialView 假设渲染 HTML 片段,而不是整个页面,这就是 PartialView 的主要目的,所以,使用它:

PartialView Success.cshtml:

<h2>Successfully Saved</h2>

然后在页面中渲染 PartialView:

@if(ViewBag.Success != null && ViewBag.Success == true) //Show the message
{
  Html.RenderPartial("Success");
}
于 2013-09-09T15:10:30.643 回答