Palash Sachan Ответов: 3

Как я могу выполнить эту простую задачу в ASP.NET в MVC


Всем привет.пожалуйста, помогите мне выполнить эту очень простую задачу. ASP.NET MVC

Я могу сделать это в ASP.NET веб-формы очень и очень легко, но я не могу сделать это в MVC, так как я только начал учиться ASP.NET MVC

Простая задача состоит в том, чтобы каждый раз случайным образом менять цвет фона кнопки при нажатии:-

Теперь это я могу сделать очень легко в таких веб-формах, как эта=>

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>


protected void Button1_Click(object sender, EventArgs e)
        {
            Button1.BackColor = System.Drawing.Color.FromArgb(new Random().Next());
        }


Теперь только с помощью этих буксирных тросов я могу выполнить эту очень простую задачу в ASP.NET веб-формы
Но мне очень трудно сделать это в MVC

Так что было бы здорово, если бы кто-нибудь просто продемонстрировал мне эту простую задачу в MVC

кроме того, пожалуйста, предложите мне что-нибудь хорошее и легкое ASP.NET учебники MVC

кроме того, Пожалуйста, скажите мне, почему MVC лучше, чем Web Forms, потому что его очень легко делать в Web Forms, чем в MVC

Что я уже пробовал:

Я пробовал как в веб-формах, так и в MVC, но не могу этого сделать в MVC
пожалуйста, скажите мне, как это сделать в MVC
спасибо

3 Ответов

Рейтинг:
7

F-ES Sitecore

У вас нет концепции серверных элементов управления в MVC, поэтому вам нужно установить какие-либо свойства элемента управления через представление, так что есть немного больше работы, которую нужно сделать, и вам нужно понять html, который является чем-то, что webforms абстрагирует от вас.

@model MyModel

@using (Html.BeginForm())
{
    <input type="submit" style="background-color: @(System.Drawing.ColorTranslator.ToHtml(Model.SubmitColour))"/>
}


Представление использует свойство модели под названием SubmitColour, которое является цветовым объектом, и мы установим его в контроллере.

public class MyModel
{
    public Color SubmitColour { get; set; }
}


[HttpGet]
public ActionResult Index()
{
    MyModel m = new MyModel();

    return View(m);
}

[HttpPost]
public ActionResult Index(MyModel model)
{
    model.SubmitColour = System.Drawing.Color.FromArgb(new Random().Next());

    return View(model);
}


Вопреки распространенному мнению, javascript не требуется делать все в MVC, веб работал задолго до его изобретения и до сих пор работает без него :)

Edit: для учебника MVC google "MVC Music Store"


Palash Sachan

понял, сэр...спасибо за объяснение ... спасибо

Рейтинг:
1

TheRealSteveJudge

Может быть, вам поможет немного JavaScript.

<script>
    function getRandomColor() {
        var letters = '0123456789ABCDEF';
        var color = '#';
        for (var i = 0; i < 6; i++) {
            color += letters[Math.floor(Math.random() * 16)];
        }
        return color;
    }
</script>

<input id="Button1" type="button" value="Click Me!" onclick="document.getElementById('Button1').style.background = getRandomColor()"/>


Palash Sachan

спасибо за ответ ... но я не хочу делать это с помощью javascript..

Рейтинг:
0

Bohdan Stupak

Причина, по которой MVC лучше, чем web forms, на самом деле заключается в том, что вы не можете выполнить эту задачу на бэкэнде, чтобы ваш уровень презентации не был раздут как бизнес-логикой, так и логикой презентации.
Разделение интересов, безусловно, является преимуществом APS.NET MVC, в отличие от огромных файлов aspx. cs, которые невозможно поддерживать.
Вместо этого обработайте логику презентации с помощью javascript.
Где-то в вашем cshtml

<button id="yourButtonId"/>
<script type="text/javascript">
    function getRandomColor() {
        var letters = '0123456789ABCDEF';
        var color = '#';
        for (var i = 0; i < 6; i++) {
            color += letters[Math.floor(Math.random() * 16)];
        }
        return color;
    }

    function modifyBackgroundColor(event) {
        event.currentTarget.style.backgroundColor = getRandomColor();
    }

    var yourButton = document.getElementById("yourButtonId");
    yourButton.addEventListener("click", modifyBackgroundColor, false);
</script>


Palash Sachan

спасибо за ответ ... но я не хочу делать это с помощью javascript..