umbraco mvc surface controller, can't return view from HttpPost Action












9















Overview of the problem:



I've created a Surface controller with an action that is called using @Html.Action(...).



The @Html.Action call is done within a Macro partial view and the macro is included within the content of a page using the rich text editor.



(I'm new to this so if i'm going about things the wrong way then please let me know.)



The Surface controller has a GET and a POST action but it's the get action called within the macro partial.



Get action renders fine, entering no data into the form will invalidate the model state (which is what i'm currently testing).



submitting the form (with no entered data) means i can step into my POST action, ModelState.IsValid is set to false and CurrentUmbracoPage() is returned.



All fine... No Exceptions encountered when debugging...



It's at this point that the error text "Error loading Partial View script" appears on the page.



All I'm trying to do is return the same page with the validation messages showing.



Details:



Umbraco v6.0.5



The Controller I'm currently working on is used to reset a user's password. I also have a login conroller that is getting around this issue by using RedirectToCurrentUmbracoPage().



to access the page that contains the macro i use the address http://{testhost}/Reset-Password
the error text returned reads: Error loading Partial View script (file: ~/Views/MacroPartials/ResetPassword.cshtml)



code is within a seperate solution and views and bin directories are copied accross.
nuget package UmbracoCMS.Scaffolding is used.



Controller code:



public class ResetPasswordSurfaceController : SurfaceController {        
[ChildActionOnly]
[HttpGet]
public ActionResult Reset(string token, string email) {
// Validation Code Omited
var user = Membership.GetUser(username);
return PartialView("Reset", new ResetPasswordSurfaceModel { UserID = user.ProviderUserKey.AsInt() });
}

[HttpPost]
public ActionResult PostReset(ResetPasswordSurfaceModel model) {
if (ModelState.IsValid) {
//Password reset code omited
return RedirectToCurrentUmbracoPage();
}
//works but only partial view content is rendered
// return PartialView("Reset",model);
return CurrentUmbracoPage();
}
}


View - ~ViewsResetPasswordSurfaceReset.cshtml:



@model UmbracoExt.Models.ResetPasswordSurfaceModel
@using (Html.BeginUmbracoForm("PostReset", "ResetPasswordSurface")) {
@Html.EditorForModel()
<input type="submit" value="Submit" />
}


Macro Partial View - ~ViewsMacroPartialsResetPassword.cshtml:



@inherits Umbraco.Web.Macros.PartialViewMacroPage       
@Html.Action("Reset", "ResetPasswordSurface")


Any help is appreciated.



Edit:



Removing the [HttpGet] attribute from the Reset Action has revealed that after the PostReset action is called the Reset action is also called.



Renaming PostReset to Reset and re-adding the httpget attribute to the original Reset Action results in the post action being called twice.
the second time it is called causes the exception:
Can only use UmbracoPageResult in the context of an Http POST when using a SurfaceController form



I have reverted the changes so i'm back at Reset ([HttpGet]) being called after the PostReset action.



So the problem still stands. How can i get around this issue?
I need to return the result from the PostReset Action.










share|improve this question





























    9















    Overview of the problem:



    I've created a Surface controller with an action that is called using @Html.Action(...).



    The @Html.Action call is done within a Macro partial view and the macro is included within the content of a page using the rich text editor.



    (I'm new to this so if i'm going about things the wrong way then please let me know.)



    The Surface controller has a GET and a POST action but it's the get action called within the macro partial.



    Get action renders fine, entering no data into the form will invalidate the model state (which is what i'm currently testing).



    submitting the form (with no entered data) means i can step into my POST action, ModelState.IsValid is set to false and CurrentUmbracoPage() is returned.



    All fine... No Exceptions encountered when debugging...



    It's at this point that the error text "Error loading Partial View script" appears on the page.



    All I'm trying to do is return the same page with the validation messages showing.



    Details:



    Umbraco v6.0.5



    The Controller I'm currently working on is used to reset a user's password. I also have a login conroller that is getting around this issue by using RedirectToCurrentUmbracoPage().



    to access the page that contains the macro i use the address http://{testhost}/Reset-Password
    the error text returned reads: Error loading Partial View script (file: ~/Views/MacroPartials/ResetPassword.cshtml)



    code is within a seperate solution and views and bin directories are copied accross.
    nuget package UmbracoCMS.Scaffolding is used.



    Controller code:



    public class ResetPasswordSurfaceController : SurfaceController {        
    [ChildActionOnly]
    [HttpGet]
    public ActionResult Reset(string token, string email) {
    // Validation Code Omited
    var user = Membership.GetUser(username);
    return PartialView("Reset", new ResetPasswordSurfaceModel { UserID = user.ProviderUserKey.AsInt() });
    }

    [HttpPost]
    public ActionResult PostReset(ResetPasswordSurfaceModel model) {
    if (ModelState.IsValid) {
    //Password reset code omited
    return RedirectToCurrentUmbracoPage();
    }
    //works but only partial view content is rendered
    // return PartialView("Reset",model);
    return CurrentUmbracoPage();
    }
    }


    View - ~ViewsResetPasswordSurfaceReset.cshtml:



    @model UmbracoExt.Models.ResetPasswordSurfaceModel
    @using (Html.BeginUmbracoForm("PostReset", "ResetPasswordSurface")) {
    @Html.EditorForModel()
    <input type="submit" value="Submit" />
    }


    Macro Partial View - ~ViewsMacroPartialsResetPassword.cshtml:



    @inherits Umbraco.Web.Macros.PartialViewMacroPage       
    @Html.Action("Reset", "ResetPasswordSurface")


    Any help is appreciated.



    Edit:



    Removing the [HttpGet] attribute from the Reset Action has revealed that after the PostReset action is called the Reset action is also called.



    Renaming PostReset to Reset and re-adding the httpget attribute to the original Reset Action results in the post action being called twice.
    the second time it is called causes the exception:
    Can only use UmbracoPageResult in the context of an Http POST when using a SurfaceController form



    I have reverted the changes so i'm back at Reset ([HttpGet]) being called after the PostReset action.



    So the problem still stands. How can i get around this issue?
    I need to return the result from the PostReset Action.










    share|improve this question



























      9












      9








      9








      Overview of the problem:



      I've created a Surface controller with an action that is called using @Html.Action(...).



      The @Html.Action call is done within a Macro partial view and the macro is included within the content of a page using the rich text editor.



      (I'm new to this so if i'm going about things the wrong way then please let me know.)



      The Surface controller has a GET and a POST action but it's the get action called within the macro partial.



      Get action renders fine, entering no data into the form will invalidate the model state (which is what i'm currently testing).



      submitting the form (with no entered data) means i can step into my POST action, ModelState.IsValid is set to false and CurrentUmbracoPage() is returned.



      All fine... No Exceptions encountered when debugging...



      It's at this point that the error text "Error loading Partial View script" appears on the page.



      All I'm trying to do is return the same page with the validation messages showing.



      Details:



      Umbraco v6.0.5



      The Controller I'm currently working on is used to reset a user's password. I also have a login conroller that is getting around this issue by using RedirectToCurrentUmbracoPage().



      to access the page that contains the macro i use the address http://{testhost}/Reset-Password
      the error text returned reads: Error loading Partial View script (file: ~/Views/MacroPartials/ResetPassword.cshtml)



      code is within a seperate solution and views and bin directories are copied accross.
      nuget package UmbracoCMS.Scaffolding is used.



      Controller code:



      public class ResetPasswordSurfaceController : SurfaceController {        
      [ChildActionOnly]
      [HttpGet]
      public ActionResult Reset(string token, string email) {
      // Validation Code Omited
      var user = Membership.GetUser(username);
      return PartialView("Reset", new ResetPasswordSurfaceModel { UserID = user.ProviderUserKey.AsInt() });
      }

      [HttpPost]
      public ActionResult PostReset(ResetPasswordSurfaceModel model) {
      if (ModelState.IsValid) {
      //Password reset code omited
      return RedirectToCurrentUmbracoPage();
      }
      //works but only partial view content is rendered
      // return PartialView("Reset",model);
      return CurrentUmbracoPage();
      }
      }


      View - ~ViewsResetPasswordSurfaceReset.cshtml:



      @model UmbracoExt.Models.ResetPasswordSurfaceModel
      @using (Html.BeginUmbracoForm("PostReset", "ResetPasswordSurface")) {
      @Html.EditorForModel()
      <input type="submit" value="Submit" />
      }


      Macro Partial View - ~ViewsMacroPartialsResetPassword.cshtml:



      @inherits Umbraco.Web.Macros.PartialViewMacroPage       
      @Html.Action("Reset", "ResetPasswordSurface")


      Any help is appreciated.



      Edit:



      Removing the [HttpGet] attribute from the Reset Action has revealed that after the PostReset action is called the Reset action is also called.



      Renaming PostReset to Reset and re-adding the httpget attribute to the original Reset Action results in the post action being called twice.
      the second time it is called causes the exception:
      Can only use UmbracoPageResult in the context of an Http POST when using a SurfaceController form



      I have reverted the changes so i'm back at Reset ([HttpGet]) being called after the PostReset action.



      So the problem still stands. How can i get around this issue?
      I need to return the result from the PostReset Action.










      share|improve this question
















      Overview of the problem:



      I've created a Surface controller with an action that is called using @Html.Action(...).



      The @Html.Action call is done within a Macro partial view and the macro is included within the content of a page using the rich text editor.



      (I'm new to this so if i'm going about things the wrong way then please let me know.)



      The Surface controller has a GET and a POST action but it's the get action called within the macro partial.



      Get action renders fine, entering no data into the form will invalidate the model state (which is what i'm currently testing).



      submitting the form (with no entered data) means i can step into my POST action, ModelState.IsValid is set to false and CurrentUmbracoPage() is returned.



      All fine... No Exceptions encountered when debugging...



      It's at this point that the error text "Error loading Partial View script" appears on the page.



      All I'm trying to do is return the same page with the validation messages showing.



      Details:



      Umbraco v6.0.5



      The Controller I'm currently working on is used to reset a user's password. I also have a login conroller that is getting around this issue by using RedirectToCurrentUmbracoPage().



      to access the page that contains the macro i use the address http://{testhost}/Reset-Password
      the error text returned reads: Error loading Partial View script (file: ~/Views/MacroPartials/ResetPassword.cshtml)



      code is within a seperate solution and views and bin directories are copied accross.
      nuget package UmbracoCMS.Scaffolding is used.



      Controller code:



      public class ResetPasswordSurfaceController : SurfaceController {        
      [ChildActionOnly]
      [HttpGet]
      public ActionResult Reset(string token, string email) {
      // Validation Code Omited
      var user = Membership.GetUser(username);
      return PartialView("Reset", new ResetPasswordSurfaceModel { UserID = user.ProviderUserKey.AsInt() });
      }

      [HttpPost]
      public ActionResult PostReset(ResetPasswordSurfaceModel model) {
      if (ModelState.IsValid) {
      //Password reset code omited
      return RedirectToCurrentUmbracoPage();
      }
      //works but only partial view content is rendered
      // return PartialView("Reset",model);
      return CurrentUmbracoPage();
      }
      }


      View - ~ViewsResetPasswordSurfaceReset.cshtml:



      @model UmbracoExt.Models.ResetPasswordSurfaceModel
      @using (Html.BeginUmbracoForm("PostReset", "ResetPasswordSurface")) {
      @Html.EditorForModel()
      <input type="submit" value="Submit" />
      }


      Macro Partial View - ~ViewsMacroPartialsResetPassword.cshtml:



      @inherits Umbraco.Web.Macros.PartialViewMacroPage       
      @Html.Action("Reset", "ResetPasswordSurface")


      Any help is appreciated.



      Edit:



      Removing the [HttpGet] attribute from the Reset Action has revealed that after the PostReset action is called the Reset action is also called.



      Renaming PostReset to Reset and re-adding the httpget attribute to the original Reset Action results in the post action being called twice.
      the second time it is called causes the exception:
      Can only use UmbracoPageResult in the context of an Http POST when using a SurfaceController form



      I have reverted the changes so i'm back at Reset ([HttpGet]) being called after the PostReset action.



      So the problem still stands. How can i get around this issue?
      I need to return the result from the PostReset Action.







      asp.net-mvc forms http-post umbraco






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jun 15 '13 at 13:23









      tereško

      52.6k2078136




      52.6k2078136










      asked May 30 '13 at 3:41









      X-DevX-Dev

      3171321




      3171321
























          3 Answers
          3






          active

          oldest

          votes


















          9














          This is how I solved this problem:





          1. I created extension method for model:



            public static class ExtensionMethods
            {
            public static void MapModel<T>(this WebViewPage<T> page) where T : class
            {
            var models = page.ViewContext.TempData.Where(item => item.Value is T);

            if (models.Any())
            {
            page.ViewData.Model = (T)models.First().Value;
            page.ViewContext.TempData.Remove(models.First().Key);
            }
            }
            }



          2. Controller code:



            [HttpPost]
            public ActionResult Index(MyModel model)
            {
            TempData.Add("MyModel", model);
            return RedirectToCurrentUmbracoPage();
            }



          3. Partial view code:



             @using UmbracoTest.Extension
            @using UmbracoTest.Models
            @model MyModel
            @{
            this.MapModel<MyModel>();
            }

            @using (Html.BeginUmbracoForm("Index", "Home", FormMethod.Post))
            {
            <div>
            @Html.TextBox("Text", Model.Text )
            </div>

            <input type="submit" name="submit" value="Submit" />
            }







          share|improve this answer

































            2














            The Answers were given to me here



            All credit goes to Shannon Deminick



            The post action does not return anything for the response (that bit was new to me).
            After the post when the Reset action is run the second time, since the modelstate is maintained, by passing a newly instantiated model, this model will inherit the model state of the model processed in the POST action (PostReset).



            During the second time the Reset action was called, the validation logic meant it never gets to the point where it returns the partial view.



            i temporarily bypassed the validation logic and sure enough the model validation messages were displayed.






            share|improve this answer































              1














              I fixed this error by resolving a naming conflict:




              • Make sure that the GET and POST methods are named differently

              • Make sure the controller name doesn't conflict with any document types






              share|improve this answer























                Your Answer






                StackExchange.ifUsing("editor", function () {
                StackExchange.using("externalEditor", function () {
                StackExchange.using("snippets", function () {
                StackExchange.snippets.init();
                });
                });
                }, "code-snippets");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "1"
                };
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function() {
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled) {
                StackExchange.using("snippets", function() {
                createEditor();
                });
                }
                else {
                createEditor();
                }
                });

                function createEditor() {
                StackExchange.prepareEditor({
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: true,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: 10,
                bindNavPrevention: true,
                postfix: "",
                imageUploader: {
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                },
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                });


                }
                });














                draft saved

                draft discarded


















                StackExchange.ready(
                function () {
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f16827552%2fumbraco-mvc-surface-controller-cant-return-view-from-httppost-action%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                9














                This is how I solved this problem:





                1. I created extension method for model:



                  public static class ExtensionMethods
                  {
                  public static void MapModel<T>(this WebViewPage<T> page) where T : class
                  {
                  var models = page.ViewContext.TempData.Where(item => item.Value is T);

                  if (models.Any())
                  {
                  page.ViewData.Model = (T)models.First().Value;
                  page.ViewContext.TempData.Remove(models.First().Key);
                  }
                  }
                  }



                2. Controller code:



                  [HttpPost]
                  public ActionResult Index(MyModel model)
                  {
                  TempData.Add("MyModel", model);
                  return RedirectToCurrentUmbracoPage();
                  }



                3. Partial view code:



                   @using UmbracoTest.Extension
                  @using UmbracoTest.Models
                  @model MyModel
                  @{
                  this.MapModel<MyModel>();
                  }

                  @using (Html.BeginUmbracoForm("Index", "Home", FormMethod.Post))
                  {
                  <div>
                  @Html.TextBox("Text", Model.Text )
                  </div>

                  <input type="submit" name="submit" value="Submit" />
                  }







                share|improve this answer






























                  9














                  This is how I solved this problem:





                  1. I created extension method for model:



                    public static class ExtensionMethods
                    {
                    public static void MapModel<T>(this WebViewPage<T> page) where T : class
                    {
                    var models = page.ViewContext.TempData.Where(item => item.Value is T);

                    if (models.Any())
                    {
                    page.ViewData.Model = (T)models.First().Value;
                    page.ViewContext.TempData.Remove(models.First().Key);
                    }
                    }
                    }



                  2. Controller code:



                    [HttpPost]
                    public ActionResult Index(MyModel model)
                    {
                    TempData.Add("MyModel", model);
                    return RedirectToCurrentUmbracoPage();
                    }



                  3. Partial view code:



                     @using UmbracoTest.Extension
                    @using UmbracoTest.Models
                    @model MyModel
                    @{
                    this.MapModel<MyModel>();
                    }

                    @using (Html.BeginUmbracoForm("Index", "Home", FormMethod.Post))
                    {
                    <div>
                    @Html.TextBox("Text", Model.Text )
                    </div>

                    <input type="submit" name="submit" value="Submit" />
                    }







                  share|improve this answer




























                    9












                    9








                    9







                    This is how I solved this problem:





                    1. I created extension method for model:



                      public static class ExtensionMethods
                      {
                      public static void MapModel<T>(this WebViewPage<T> page) where T : class
                      {
                      var models = page.ViewContext.TempData.Where(item => item.Value is T);

                      if (models.Any())
                      {
                      page.ViewData.Model = (T)models.First().Value;
                      page.ViewContext.TempData.Remove(models.First().Key);
                      }
                      }
                      }



                    2. Controller code:



                      [HttpPost]
                      public ActionResult Index(MyModel model)
                      {
                      TempData.Add("MyModel", model);
                      return RedirectToCurrentUmbracoPage();
                      }



                    3. Partial view code:



                       @using UmbracoTest.Extension
                      @using UmbracoTest.Models
                      @model MyModel
                      @{
                      this.MapModel<MyModel>();
                      }

                      @using (Html.BeginUmbracoForm("Index", "Home", FormMethod.Post))
                      {
                      <div>
                      @Html.TextBox("Text", Model.Text )
                      </div>

                      <input type="submit" name="submit" value="Submit" />
                      }







                    share|improve this answer















                    This is how I solved this problem:





                    1. I created extension method for model:



                      public static class ExtensionMethods
                      {
                      public static void MapModel<T>(this WebViewPage<T> page) where T : class
                      {
                      var models = page.ViewContext.TempData.Where(item => item.Value is T);

                      if (models.Any())
                      {
                      page.ViewData.Model = (T)models.First().Value;
                      page.ViewContext.TempData.Remove(models.First().Key);
                      }
                      }
                      }



                    2. Controller code:



                      [HttpPost]
                      public ActionResult Index(MyModel model)
                      {
                      TempData.Add("MyModel", model);
                      return RedirectToCurrentUmbracoPage();
                      }



                    3. Partial view code:



                       @using UmbracoTest.Extension
                      @using UmbracoTest.Models
                      @model MyModel
                      @{
                      this.MapModel<MyModel>();
                      }

                      @using (Html.BeginUmbracoForm("Index", "Home", FormMethod.Post))
                      {
                      <div>
                      @Html.TextBox("Text", Model.Text )
                      </div>

                      <input type="submit" name="submit" value="Submit" />
                      }








                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Jul 8 '13 at 7:41

























                    answered Jul 7 '13 at 6:39









                    milosmilos

                    913




                    913

























                        2














                        The Answers were given to me here



                        All credit goes to Shannon Deminick



                        The post action does not return anything for the response (that bit was new to me).
                        After the post when the Reset action is run the second time, since the modelstate is maintained, by passing a newly instantiated model, this model will inherit the model state of the model processed in the POST action (PostReset).



                        During the second time the Reset action was called, the validation logic meant it never gets to the point where it returns the partial view.



                        i temporarily bypassed the validation logic and sure enough the model validation messages were displayed.






                        share|improve this answer




























                          2














                          The Answers were given to me here



                          All credit goes to Shannon Deminick



                          The post action does not return anything for the response (that bit was new to me).
                          After the post when the Reset action is run the second time, since the modelstate is maintained, by passing a newly instantiated model, this model will inherit the model state of the model processed in the POST action (PostReset).



                          During the second time the Reset action was called, the validation logic meant it never gets to the point where it returns the partial view.



                          i temporarily bypassed the validation logic and sure enough the model validation messages were displayed.






                          share|improve this answer


























                            2












                            2








                            2







                            The Answers were given to me here



                            All credit goes to Shannon Deminick



                            The post action does not return anything for the response (that bit was new to me).
                            After the post when the Reset action is run the second time, since the modelstate is maintained, by passing a newly instantiated model, this model will inherit the model state of the model processed in the POST action (PostReset).



                            During the second time the Reset action was called, the validation logic meant it never gets to the point where it returns the partial view.



                            i temporarily bypassed the validation logic and sure enough the model validation messages were displayed.






                            share|improve this answer













                            The Answers were given to me here



                            All credit goes to Shannon Deminick



                            The post action does not return anything for the response (that bit was new to me).
                            After the post when the Reset action is run the second time, since the modelstate is maintained, by passing a newly instantiated model, this model will inherit the model state of the model processed in the POST action (PostReset).



                            During the second time the Reset action was called, the validation logic meant it never gets to the point where it returns the partial view.



                            i temporarily bypassed the validation logic and sure enough the model validation messages were displayed.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered May 31 '13 at 4:28









                            X-DevX-Dev

                            3171321




                            3171321























                                1














                                I fixed this error by resolving a naming conflict:




                                • Make sure that the GET and POST methods are named differently

                                • Make sure the controller name doesn't conflict with any document types






                                share|improve this answer




























                                  1














                                  I fixed this error by resolving a naming conflict:




                                  • Make sure that the GET and POST methods are named differently

                                  • Make sure the controller name doesn't conflict with any document types






                                  share|improve this answer


























                                    1












                                    1








                                    1







                                    I fixed this error by resolving a naming conflict:




                                    • Make sure that the GET and POST methods are named differently

                                    • Make sure the controller name doesn't conflict with any document types






                                    share|improve this answer













                                    I fixed this error by resolving a naming conflict:




                                    • Make sure that the GET and POST methods are named differently

                                    • Make sure the controller name doesn't conflict with any document types







                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Jan 2 at 15:41









                                    ElliottElliott

                                    1,99621426




                                    1,99621426






























                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Stack Overflow!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f16827552%2fumbraco-mvc-surface-controller-cant-return-view-from-httppost-action%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        Mossoró

                                        Error while reading .h5 file using the rhdf5 package in R

                                        Pushsharp Apns notification error: 'InvalidToken'