рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ HTML рдкреГрд╖реНрда рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░ рдореЗрдВ .NET рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди

рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЗрдирдкреБрдЯ


рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдПрдХ HTML рдкреЗрдЬ рдкрд░ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрд░рд╛рдиреЗ рд╕рдордп рд╕реЗ , рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЫрд┐рдкреЗ рд╣реБрдП рдЗрдирдкреБрдЯ ред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдореЗрдВ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рдЙрд░реА рдкрддреЗ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ

<input type="hidden" name="webServiceUri" value="URI we need"/> 

рдФрд░ рд╣рдо рдЗрд╕ рдЗрдирдкреБрдЯ рдХреЛ рдирд╛рдо рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП jQuery рдпрд╛ рд╕рд╛рджреЗ рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ REST рд╕реЗрд╡рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреЗрдЬ (рд╕рддреНрд░ рдбреЗрдЯрд╛) рд╕реЗ AJAX рдЕрдиреБрд░реЛрдз рдкрд░ рд╕рднреА рдбреЗрдЯрд╛ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдПрдХ рдФрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл, HTML рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ ASP.NET MVC рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

рдкреЗрдЬ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:

 <script type="text/javascript"> var settings = {"WebServiceUri":"URI we need","UserId":"1212"}; </script> 

MVC HtmlHelper рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓реА:

  /// <summary> /// This class provides the extension methods to ASP.NET MVC HtmlHelper. /// </summary> public static class HtmlHelperExtensions { /// <summary> /// This method renders the given model class as JavaScript variable within Html Script tag. /// </summary> /// <param name="htmlHelper">HtmlHelper instance we extend by this method.</param> /// <param name="variableName">The name of JavaScript variable the rendered Json object will be assigned to.</param> /// <param name="model">The model class to be rendered to Json and assigned to the variable.</param> /// <returns>Html representation of Html Script tag.</returns> public static MvcHtmlString RenderJsToScriptBlock(this HtmlHelper htmlHelper, string variableName, object model) { #region Pre-conditions if (string.IsNullOrWhiteSpace(variableName)) { throw new ArgumentNullException("variableName"); } #endregion Pre-conditions if (null == model) { return MvcHtmlString.Empty; } TagBuilder tagBuilder = new TagBuilder(@"script"); tagBuilder.MergeAttribute(@"type", @"text/javascript"); // use InnerHtml because it doesn't encode characters tagBuilder.InnerHtml = string.Format("var {0} = {1};", variableName, htmlHelper.Raw(Json.Encode(model))); return new MvcHtmlString(tagBuilder.ToString()); } } 

Moq рдврд╛рдВрдЪреЗ рдФрд░ MSTest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреБрдЫ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг:

  [TestMethod, TestCategory("Unit")] [ExpectedException(typeof(ArgumentNullException))] public void Should_Not_Accept_Null_VariableName() { HtmlHelper helper = new HtmlHelper(new Mock<ViewContext>().Object, new Mock<IViewDataContainer>().Object); helper.RenderJsToScriptBlock(null, null); } [TestMethod, TestCategory("Unit")] [ExpectedException(typeof(ArgumentNullException))] public void Should_Not_Accept_Empty_VariableName() { HtmlHelper helper = new HtmlHelper(new Mock<ViewContext>().Object, new Mock<IViewDataContainer>().Object); helper.RenderJsToScriptBlock(string.Empty, null); } [TestMethod, TestCategory("Unit")] public void Should_Return_Empty_MvcHtmlString_For_NullModel() { HtmlHelper helper = new HtmlHelper(new Mock<ViewContext>().Object, new Mock<IViewDataContainer>().Object); MvcHtmlString mvcHtmlString = helper.RenderJsToScriptBlock("variableName", null); Assert.AreEqual(mvcHtmlString, MvcHtmlString.Empty); } [TestMethod, TestCategory("Unit")] public void Should_Return_Correct_Result_For_Correct_Input() { const string expectedHtmlString = "<script type=\"text/javascript\">var variableName = {\"UserName\":\"Alex\"};</script>"; HtmlHelper helper = new HtmlHelper(new Mock<ViewContext>().Object, new Mock<IViewDataContainer>().Object); var model = new { UserName = "Alex" }; MvcHtmlString mvcHtmlString = helper.RenderJsToScriptBlock("variableName", model); Assert.AreEqual(mvcHtmlString.ToHtmlString(), expectedHtmlString); } 

Source: https://habr.com/ru/post/In163239/


All Articles