Как вы запускаете скрытие в @ Html.TextBoxFor () - PullRequest
0 голосов
/ 03 июля 2019

Я хочу скрыть ввод, который находится в

(new { htmlAttributes = new { @type = "number", @min = "1", @max="99", @placeholder = "Number of ???" } })

, когда метод post фактически запущен, я хочу, чтобы он потом скрыл ввод.

ВотВвод номера формы и ввод кнопки.

Я видел это Как сделать @ Html.EditorFor невидимым?

// cshtml

@using (@Html.BeginForm("ConfirmOrder", "Home", FormMethod.Post))
{
    @Html.EditorFor(model => model.Number, new { htmlAttributes = new { @type = "number", @min = "1", @max = "99", @placeholder = "Number of ???" } })
    <input type="submit" value="Confirm" />
}

// cshtml.cs code

public class DetailsModel : PageModel
    {
        private readonly ShopDashboard.Models.ShopDashboardContext _context;



public DetailsModel(ShopDashboard.Models.ShopDashboardContext context)
    {
        _context = context;
    }
    public int Number { get; set; }
    public Order Order { get; set; }
    public async Task<IActionResult> OnGetAsync(string id)
    {
        if (id == null)
        {
            return NotFound();
        }



Order = await Task.Run(() => Post.GetOrders().FirstOrDefault(m => m.Id == id));

if (Order == null)
{
    return NotFound();
}
return Page();

}

public async Task<IActionResult> OnPostAsync(string id, int Number = -1)
{

if (id == null)
        {
            return NotFound();
        }



 Order = await Task.Run(() => Post.method().FirstOrDefault(m => m.Id == id));




if (Order != null)
        {
            IActionResult result;
            if (Number == -1)
            {
                result = new OkObjectResult(JsonConvert.DeserializeObject(Post.method().Content));
                return result;
            }
            MediaTypeHeaderValue mediaTypeHeaderValue = new MediaTypeHeaderValue("application/pdf");
            IRestResponse response = Post.method();
            result = new ContentResult() { Content = response.Content };
            if (response.IsSuccessful)
            {
                FileContentResult contentResult = new FileContentResult(response.RawBytes, mediaTypeHeaderValue.MediaType)
                {
                    FileDownloadName = "???" + response.Headers
                    .Where(header => header.Name == "Content-Disposition").First()
                    .Value.ToString().Split("=")[1].Split("?").First() + ".pdf"
                };
                result = contentResult;
            }
            return result;
        }
        return Page();
}

1 Ответ

0 голосов
/ 03 июля 2019

Хорошо, поэтому я подготовил простое приложение MVC, чтобы продемонстрировать, как вы можете достичь своей функциональности, используя Hidden элементы.Программа примет простой пользовательский ввод и отправит его на ActionResult.Когда будет получено скрытое значение, оно просто скроет ваш селектор чисел.Вы можете адаптировать программу в соответствии с вашими потребностями.

Ваш класс Model будет выглядеть следующим образом:

namespace ExampleMVC
{
    public class SampleViewModel
    {
        public string inputID { get; set; }
        public string lastinputID { get; set; }
    }
}

Ваш View будет выглядеть (индекс):

@model ExampleMVC.SampleViewModel
@{
    Layout = null;
}

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- CSS Includes -->
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">

    </head>

    <body>
        <div class="container">
            <div class="col-md-6 col-md-offset-3">
                <h2>Input your number here</h2>
                @using (Html.BeginForm("ConfirmOrder", "Home", FormMethod.Post))
                {
                <div class="form-group">
                    @if (Convert.ToInt32(Model.lastinputID) == 0)
                    {
                        @Html.EditorFor(model => model.inputID, new { htmlAttributes = new { @type = "number", @min = "1", @max = "99", @placeholder = "Number of ???" } })
                    }
                    else
                    {
                        <h3>Value recieved, hiding input</h3>
                    }

                    @Html.HiddenFor(model => model.lastinputID)
                    <br>
                    <br>
                    Last Value: @Model.lastinputID
                </div>

                    <button type="submit" class="btn btn-success submit">Submit</button>
                }
            </div>
        </div>
    </body>
</html>

И ваш Controller будетвыглядит так:

using System.Web.Mvc;

namespace ExampleMVC.Controllers
{
    public class HomeController : Controller
    {
        [HttpGet]
        public ActionResult Index()
        {
            SampleViewModel sample = new SampleViewModel();
            sample.lastinputID = "0";
            return View(sample);
        }


        [HttpPost]
        public ActionResult ConfirmOrder(SampleViewModel sample)
        {
            sample.lastinputID = sample.inputID;
            //Do something here
            return View("Index",sample);
        }
    }
}

Надеюсь, это поможет в вашем вопросе.

...